// File: /workspace/github_cpp_makefile_star2_O2/Nallantli[P]Rossa/main/rossa/node_parser/node_parser.cpp
// Function: node_parser_t::parseExprNode(std::vector<node_scope_t, std::allocator<node_scope_t>>*)
ptr_node_t node_parser_t::parseExprNode(std::vector<node_scope_t> *scopes)
{

	if (currentToken.type == NULL_TOK)
		return logErrorN(_UNEXPECTED_TERMINATION_, currentToken);

	switch (currentToken.type)
	{
	case ';':
		return logErrorN(_EXPECTED_EXPR_, currentToken);
	case TOK_LOAD:
		return parseLoadNode(scopes);
	case TOK_DEF:
		return parseDefineNode(scopes);
	case TOK_FOR:
		return parseForNode(scopes);
	case TOK_WHILE:
		return parseWhileNode(scopes);
	case TOK_IF:
		return parseIfElseNode(scopes);
	case TOK_EXTERN:
		return parseExternNode(scopes);
	case TOK_SWITCH:
		return parseSwitchNode(scopes);
	case TOK_TRY:
		return parseTryCatchNode(scopes);
	case TOK_STRUCT:
	case TOK_STATIC:
	case TOK_VIRTUAL:
		return parseClassNode(scopes);
	case TOK_ENUM:
	{
		nextToken();

		if (currentToken.type != TOK_IDF)
			return logErrorN(_EXPECTED_IDF_, currentToken);
		hash_ull id = ROSSA_HASH(currentToken.valueString);
		scopes->push_back({id});
		nextToken();

		number_t index = number_t::Long(0);

		if (currentToken.valueString != "{")
			return logErrorN(util::format(_EXPECTED_ERROR_, {"{"}), currentToken);
		nextToken();

		while (currentToken.type != '}')
		{
			if (currentToken.type != TOK_IDF)
				return logErrorN(_EXPECTED_IDF_, currentToken);
			hash_ull enid = ROSSA_HASH(currentToken.valueString);
			nextToken();

			std::vector<hash_ull> path;
			for (auto &k : *scopes)
				path.push_back(k.id);
			path.push_back(enid);

			if (currentToken.type != ',' && currentToken.type != '}')
			{
				if (currentToken.valueString == "=")
				{
					nextToken();
					auto marker = currentToken;
					try
					{
						object_t newScope(static_cast<hash_ull>(0));
						trace_t trace;
						index = parseEquNode(scopes)->fold(*consts)->genParser()->evaluate(&newScope, trace).getNumber(NULL, trace);
					}
					catch (const rossa_error_t &e)
					{
						return logErrorN(_CANNOT_MAKE_CONST_, marker);
					}
					if (currentToken.type == ',')
					{
						nextToken();
					}
					else if (currentToken.type != '}')
						return logErrorN(util::format(_EXPECTED_ERROR_, {"}` `,"}), currentToken);
				}
				else
					return logErrorN(util::format(_EXPECTED_ERROR_, {"}` `,"}), currentToken);
			}
			else if (currentToken.type == ',')
			{
				nextToken();
			}
			consts->push_back({path, symbol_t::Number(index)});
			index += number_t::Long(1);
		}
		nextToken();
		scopes->pop_back();
		return std::make_shared<ContainerNode>(*scopes, symbol_t(), currentToken);
	}
	case TOK_CONST:
	{
		auto marker = currentToken;
		nextToken();

		if (currentToken.type != TOK_IDF)
			return logErrorN(_EXPECTED_IDF_, currentToken);
		hash_ull id = ROSSA_HASH(currentToken.valueString);
		nextToken();

		if (currentToken.valueString != "=")
			return logErrorN(util::format(_EXPECTED_ERROR_, {"="}), currentToken);
		nextToken();

		try
		{
			object_t newScope(static_cast<hash_ull>(0));
			trace_t trace;
			auto vn = parseEquNode(scopes)->fold(*consts)->genParser()->evaluate(&newScope, trace);
			// scopes->back().var_ids.push_back({ id, vn });
			std::vector<hash_ull> path;
			for (auto &k : *scopes)
				path.push_back(k.id);
			path.push_back(id);
			consts->push_back({path, vn});
			if (currentToken.type != ';')
				return logErrorN(util::format(_EXPECTED_ERROR_, {";"}), currentToken);
			nextToken();
			return std::make_shared<ContainerNode>(*scopes, vn, marker);
		}
		catch (const rossa_error_t &e)
		{
			return logErrorN(_CANNOT_MAKE_CONST_, marker);
		}
		return nullptr;
	}
	case TOK_VAR:
	{
		auto marker = currentToken;
		nextToken();
		int i = 0;
		std::vector<hash_ull> v;
		while (currentToken.type != NULL_TOK)
		{
			if (i++ > 0)
			{
				if (currentToken.type != ',')
					return logErrorN(util::format(_EXPECTED_ERROR_, {","}), currentToken);
				nextToken();
			}
			if (currentToken.type != TOK_IDF)
				return logErrorN(_EXPECTED_IDF_, currentToken);
			v.push_back(ROSSA_HASH(currentToken.valueString));
			nextToken();
			if (currentToken.type == ';')
			{
				nextToken();
				return std::make_shared<VarNode>(*scopes, v, marker);
			}
		}
		return logErrorN(util::format(_EXPECTED_ERROR_, {";"}), currentToken);
	}
	case TOK_THROW:
	{
		auto marker = currentToken;
		nextToken();
		if (auto ret = parseEquNode(scopes))
		{
			if (currentToken.type != ';')
				return logErrorN(util::format(_EXPECTED_ERROR_, {";"}), currentToken);
			nextToken();
			return std::make_shared<ThrowNode>(*scopes, ret, marker);
		}
		return nullptr;
	}
	case TOK_BREAK:
		nextToken();
		if (currentToken.type != ';')
			return logErrorN(util::format(_EXPECTED_ERROR_, {";"}), currentToken);
		nextToken();
		return std::make_shared<BreakNode>(*scopes, currentToken);
	case TOK_CONTINUE:
		nextToken();
		if (currentToken.type != ';')
			return logErrorN(util::format(_EXPECTED_ERROR_, {";"}), currentToken);
		nextToken();
		return std::make_shared<ContinueNode>(*scopes, currentToken);
	case TOK_RETURN:
		nextToken();
		if (auto ret = parseEquNode(scopes))
		{
			if (currentToken.type != ';')
				return logErrorN(util::format(_EXPECTED_ERROR_, {";"}), currentToken);
			nextToken();
			return std::make_shared<ReturnNode>(*scopes, ret, currentToken);
		}
		return nullptr;
	case TOK_REFER:
		nextToken();
		if (auto ret = parseEquNode(scopes))
		{
			if (currentToken.type != ';')
				return logErrorN(util::format(_EXPECTED_ERROR_, {";"}), currentToken);
			nextToken();
			return std::make_shared<ReferNode>(*scopes, ret, currentToken);
		}
		return nullptr;
	default:
		if (auto ret = parseEquNode(scopes))
		{
			if (currentToken.type != ';')
				return logErrorN(util::format(_EXPECTED_ERROR_, {";"}), currentToken);
			nextToken();
			return ret;
		}
		return nullptr;
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x198, %rsp            # imm = 0x198
movq %rdx, 0x8(%rsp)
movq %rsi, %rbx
leaq 0x58(%rsi), %r13
movl 0xd0(%rsi), %eax
leal 0x33(%rax), %ecx
cmpl $0x17, %ecx
movq %rsi, (%rsp)
ja 0x233e4
leaq 0x5325a(%rip), %rax     # 0x76620
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq %rdi, %r14
movq %rbx, %rsi
movq 0x8(%rsp), %rdx
callq 0x2dc98
jmp 0x23e3b
leal 0x14(%rax), %ecx
cmpl $0xf, %ecx
ja 0x2340c
leaq 0x5328d(%rip), %rax     # 0x76680
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq %rdi, %r14
movq %rbx, %rsi
callq 0x2db2e
jmp 0x23e3b
cmpl $-0x3e, %eax
je 0x23c02
cmpl $-0x3a, %eax
je 0x23baa
cmpl $0x3b, %eax
je 0x243ac
testl %eax, %eax
je 0x243d9
movq %rdi, %r15
leaq 0x60(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movq 0x8(%rsp), %rdx
callq 0x25798
cmpq $0x0, (%r14)
je 0x23a3c
cmpl $0x3b, 0xd0(%rbx)
jne 0x241b5
movq %rbx, %rdi
callq 0x22e24
leaq 0x68(%rsp), %rdi
movaps -0x8(%rdi), %xmm0
andq $0x0, (%rdi)
movups %xmm0, (%r15)
andq $0x0, -0x8(%rdi)
jmp 0x23a2f
movq %rdi, %r14
movq %rbx, %rsi
movq 0x8(%rsp), %rdx
callq 0x2e046
jmp 0x23e3b
movq %rdi, %r15
movq %rbx, %rdi
callq 0x22e24
leaq 0x60(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movq 0x8(%rsp), %rdx
callq 0x25798
cmpq $0x0, (%r14)
je 0x23a3c
cmpl $0x3b, 0xd0(%rbx)
jne 0x24406
movq %rbx, %rdi
callq 0x22e24
leaq 0x100(%rsp), %rdi
leaq 0x60(%rsp), %rdx
movq 0x8(%rsp), %rsi
movq %r13, %rcx
callq 0x2f44e
jmp 0x23a0c
movq %rdi, %r14
movq %rbx, %rdi
callq 0x22e24
cmpl $0x3b, 0xd0(%rbx)
jne 0x2409b
movq %rbx, %rdi
callq 0x22e24
leaq 0x100(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %r13, %rdx
callq 0x2f3e8
jmp 0x23bdf
movq %rdi, 0x180(%rsp)
movq %rbx, %rdi
callq 0x22e24
cmpl $-0x2, 0xd0(%rbx)
jne 0x2410f
leaq 0xb0(%rbx), %r14
leaq 0x933af(%rip), %rdi     # 0xb6908
movq %r14, %rsi
callq 0x1efb0
leaq 0x108(%rsp), %r15
movq %rax, -0x8(%r15)
xorps %xmm0, %xmm0
movups %xmm0, (%r15)
andq $0x0, 0x10(%r15)
leaq 0x100(%rsp), %rsi
movq 0x8(%rsp), %rdi
callq 0x1fe52
movq %r13, 0x98(%rsp)
movq %r15, %rdi
callq 0x1f5c4
movq %rbx, %rdi
callq 0x22e24
leaq 0x100(%rsp), %rdi
andq $0x0, (%rdi)
callq 0x3ecba
movq %rax, 0xe8(%rsp)
movl %edx, 0xf0(%rsp)
leaq 0x5348b(%rip), %rsi     # 0x76a55
movq %r14, 0x190(%rsp)
movq %r14, %rdi
callq 0x1f318
testb %al, %al
jne 0x2413c
movq %rbx, %rdi
callq 0x22e24
leaq 0x60(%rsp), %r14
leaq 0x10(%rsp), %r13
leaq 0x100(%rsp), %r15
leaq 0x78(%rsp), %rbx
movq (%rsp), %r12
movl 0xd0(%r12), %eax
cmpl $-0x2, %eax
jne 0x23927
leaq 0x932eb(%rip), %rdi     # 0xb6908
movq 0x190(%rsp), %rsi
callq 0x1efb0
movq %rax, 0x188(%rsp)
movq %r12, %rdi
callq 0x22e24
andq $0x0, 0x70(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movq 0x8(%rsp), %rax
movq (%rax), %rbp
movq 0x8(%rax), %r12
cmpq %r12, %rbp
je 0x2366a
movq %r14, %rdi
movq %rbp, %rsi
callq 0x2f2f0
addq $0x20, %rbp
jmp 0x23654
movq %r14, %rdi
leaq 0x188(%rsp), %rsi
callq 0x2f2f0
movq (%rsp), %rax
movl 0xd0(%rax), %eax
cmpl $0x2c, %eax
je 0x237c7
cmpl $0x7d, %eax
je 0x237df
movq 0x190(%rsp), %rdi
leaq 0x529a0(%rip), %rsi     # 0x76045
callq 0x1c7a0
testb %al, %al
je 0x23fa6
movq (%rsp), %rdi
callq 0x22e24
movq %r15, %rdi
movq 0x98(%rsp), %rsi
callq 0x1f71a
andq $0x0, 0x10(%rsp)
leaq 0x40(%rsp), %rdi
movq %r13, %rsi
callq 0x361aa
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
andq $0x0, 0x20(%rsp)
leaq 0xd8(%rsp), %rdi
movq (%rsp), %r12
movq %r12, %rsi
movq 0x8(%rsp), %rdx
callq 0x25798
movq 0xd8(%rsp), %rsi
movq 0x8(%r12), %rdx
movq (%rsi), %rax
leaq 0xc0(%rsp), %rdi
callq *0x18(%rax)
movq 0xc0(%rsp), %rsi
movq (%rsi), %rax
leaq 0xa0(%rsp), %rdi
callq *(%rax)
movq 0xa0(%rsp), %rsi
movq (%rsi), %rax
movq %rbx, %r12
movq %rbx, %rdi
leaq 0x40(%rsp), %rdx
movq %r13, %rcx
callq *(%rax)
movq %r12, %rdi
xorl %esi, %esi
movq %r13, %rdx
callq 0x3968c
leaq 0xe8(%rsp), %rdi
movq %rax, %rsi
callq 0x3ecda
movq %r12, %rdi
callq 0x39102
leaq 0xa8(%rsp), %rdi
callq 0x1d786
leaq 0xc8(%rsp), %rdi
callq 0x1d786
leaq 0xe0(%rsp), %rdi
callq 0x1d786
movq %r13, %rdi
callq 0x1cb1a
leaq 0x40(%rsp), %rdi
callq 0x363f2
movq (%rsp), %rdi
movl 0xd0(%rdi), %eax
cmpl $0x2c, %eax
je 0x237d2
cmpl $0x7d, %eax
je 0x237d7
jmp 0x24022
movq (%rsp), %rdi
callq 0x22e24
jmp 0x237df
callq 0x22e24
movq %r15, %rdi
callq 0x1df38
movq (%rsp), %rax
movq 0x8(%rax), %rbp
movq %r13, %rdi
leaq 0xe8(%rsp), %rsi
callq 0x39080
movq %r15, %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x2f310
movq %rbp, %rdi
movq %r15, %rsi
callq 0x20042
movq %r15, %rdi
callq 0x1f0a2
movq %r13, %rdi
callq 0x39102
movq $0x1, 0x10(%rsp)
movq %r13, %rdi
callq 0x3ecba
movq %rax, 0x100(%rsp)
movl %edx, 0x108(%rsp)
leaq 0xe8(%rsp), %rdi
movq %r15, %rsi
callq 0x3ecfa
movq %r14, %rdi
callq 0x1f5c4
jmp 0x23601
movq %rdi, %r14
leaq 0x100(%rsp), %rdi
movq %r13, %rsi
callq 0x1f71a
movq %rbx, %rdi
callq 0x22e24
leaq 0xa0(%rsp), %rdi
movq %rbx, %rsi
movq 0x8(%rsp), %rdx
callq 0x25798
cmpq $0x0, 0xa0(%rsp)
je 0x23e1a
cmpl $0x3b, 0xd0(%rbx)
jne 0x2447d
movq %rbx, %rdi
callq 0x22e24
leaq 0x10(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
leaq 0x100(%rsp), %rcx
movq 0x8(%rsp), %rsi
callq 0x2f3c4
leaq 0x18(%rsp), %rdi
movaps -0x8(%rdi), %xmm0
andq $0x0, (%rdi)
movups %xmm0, (%r14)
andq $0x0, -0x8(%rdi)
callq 0x1d786
leaq 0xa8(%rsp), %rdi
callq 0x1d786
jmp 0x23e2e
movq %rdi, %r14
movq %rbx, %rsi
movq 0x8(%rsp), %rdx
callq 0x2c79c
jmp 0x23e3b
movq %rdi, %r14
movq %rbx, %rsi
movq 0x8(%rsp), %rdx
callq 0x2a3cc
jmp 0x23e3b
cmpl $0x7d, %eax
jne 0x23ef8
movq (%rsp), %rdi
callq 0x22e24
movq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x2eb8e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x38d00
leaq 0x100(%rsp), %rdi
movq %r14, %rsi
movq %rbx, %rdx
movq 0x98(%rsp), %rcx
callq 0x2eee7
leaq 0x108(%rsp), %rdi
movaps -0x8(%rdi), %xmm0
andq $0x0, (%rdi)
movq 0x180(%rsp), %rbx
movups %xmm0, (%rbx)
andq $0x0, -0x8(%rdi)
callq 0x1d786
leaq 0x10(%rsp), %rdi
callq 0x39102
jmp 0x23ba2
movq %rdi, %r14
movq %rbx, %rsi
movq 0x8(%rsp), %rdx
callq 0x2be22
jmp 0x23e3b
movq %rdi, %r15
movq %rbx, %rdi
callq 0x22e24
leaq 0x60(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movq 0x8(%rsp), %rdx
callq 0x25798
cmpq $0x0, (%r14)
je 0x23a3c
cmpl $0x3b, 0xd0(%rbx)
jne 0x244ee
movq %rbx, %rdi
callq 0x22e24
leaq 0x100(%rsp), %rdi
leaq 0x60(%rsp), %rdx
movq 0x8(%rsp), %rsi
movq %r13, %rcx
callq 0x2f42a
leaq 0x108(%rsp), %rdi
movaps -0x8(%rdi), %xmm0
andq $0x0, (%rdi)
movups %xmm0, (%r15)
andq $0x0, -0x8(%rdi)
callq 0x1d786
leaq 0x68(%rsp), %rdi
callq 0x1d786
movq %r15, %rax
jmp 0x23e3e
leaq 0x68(%rsp), %rdi
callq 0x1d786
xorps %xmm0, %xmm0
movq %r15, %rax
movups %xmm0, (%r15)
jmp 0x23e3e
movq %rdi, %r14
movq %rbx, %rsi
movq 0x8(%rsp), %rdx
callq 0x2d55c
jmp 0x23e3b
movq %rdi, %r14
movq %rbx, %rsi
movq 0x8(%rsp), %rdx
callq 0x270d8
jmp 0x23e3b
movq %rdi, %r14
movq %rbx, %rsi
movq 0x8(%rsp), %rdx
callq 0x2d05a
jmp 0x23e3b
movq %rdi, 0x180(%rsp)
leaq 0x100(%rsp), %rdi
movq %r13, 0x98(%rsp)
movq %r13, %rsi
callq 0x1f71a
movq %rbx, %rdi
callq 0x22e24
xorps %xmm0, %xmm0
leaq 0x60(%rsp), %r14
movaps %xmm0, (%r14)
andq $0x0, 0x10(%r14)
movl 0xd0(%rbx), %eax
leaq 0xb0(%rbx), %r15
xorl %r12d, %r12d
leaq 0x92e24(%rip), %r13     # 0xb6908
leaq 0x10(%rsp), %rbp
testl %eax, %eax
je 0x23e50
subl $0x1, %r12d
jb 0x23b0e
cmpl $0x2c, %eax
jne 0x23f2a
movq %rbx, %rdi
callq 0x22e24
movl 0xd0(%rbx), %eax
cmpl $-0x2, %eax
jne 0x23ecc
movq %r13, %rdi
movq %r15, %rsi
callq 0x1efb0
movq %rax, 0x10(%rsp)
movq %r14, %rdi
movq %rbp, %rsi
callq 0x31afa
movq %rbx, %rdi
callq 0x22e24
movl 0xd0(%rbx), %eax
cmpl $0x3b, %eax
jne 0x23ae9
movq %rbx, %rdi
callq 0x22e24
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rdx
leaq 0x100(%rsp), %rcx
movq 0x8(%rsp), %rsi
callq 0x2f3a0
leaq 0x18(%rsp), %rdi
movaps -0x8(%rdi), %xmm0
andq $0x0, (%rdi)
movq 0x180(%rsp), %rbx
movups %xmm0, (%rbx)
andq $0x0, -0x8(%rdi)
callq 0x1d786
leaq 0x60(%rsp), %rdi
callq 0x1f5c4
leaq 0x100(%rsp), %rdi
callq 0x1df38
movq %rbx, %rax
jmp 0x23e3e
movq %rdi, %r14
movq %rbx, %rdi
callq 0x22e24
cmpl $0x3b, 0xd0(%rbx)
jne 0x2422c
movq %rbx, %rdi
callq 0x22e24
leaq 0x100(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %r13, %rdx
callq 0x2f409
leaq 0x108(%rsp), %rdi
movaps -0x8(%rdi), %xmm0
andq $0x0, (%rdi)
movups %xmm0, (%r14)
andq $0x0, -0x8(%rdi)
callq 0x1d786
jmp 0x23e3b
movq %rdi, %rbp
leaq 0x100(%rsp), %rdi
movq %r13, %rsi
callq 0x1f71a
movq %rbx, %rdi
callq 0x22e24
cmpl $-0x2, 0xd0(%rbx)
jne 0x242a0
leaq 0xb0(%rbx), %r14
leaq 0x92cd0(%rip), %rdi     # 0xb6908
movq %r14, %rsi
callq 0x1efb0
movq %rax, 0x188(%rsp)
movq %rbx, %rdi
callq 0x22e24
leaq 0x523ee(%rip), %rsi     # 0x76045
movq %r14, %rdi
callq 0x1f318
testb %al, %al
jne 0x242c7
movq %rbx, %rdi
callq 0x22e24
leaq 0x10(%rsp), %rsi
andq $0x0, (%rsi)
leaq 0xc0(%rsp), %rdi
callq 0x361aa
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
andq $0x0, 0x70(%rsp)
leaq 0x78(%rsp), %rdi
movq %rbx, %rsi
movq 0x8(%rsp), %rdx
callq 0x25798
movq 0x78(%rsp), %rsi
movq 0x8(%rbx), %rdx
movq (%rsi), %rax
leaq 0x40(%rsp), %rdi
callq *0x18(%rax)
movq 0x40(%rsp), %rsi
movq (%rsi), %rax
leaq 0x10(%rsp), %rdi
callq *(%rax)
movq 0x10(%rsp), %rsi
movq (%rsi), %rax
leaq 0xd8(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
leaq 0x60(%rsp), %rcx
callq *(%rax)
leaq 0x18(%rsp), %rdi
callq 0x1d786
leaq 0x48(%rsp), %rdi
callq 0x1d786
leaq 0x80(%rsp), %rdi
callq 0x1d786
leaq 0xa0(%rsp), %r14
andq $0x0, 0x10(%r14)
xorps %xmm0, %xmm0
movaps %xmm0, (%r14)
movq 0x8(%rsp), %rax
movq (%rax), %r15
movq 0x8(%rax), %r12
cmpq %r12, %r15
je 0x23d3e
movq %r14, %rdi
movq %r15, %rsi
callq 0x2f2f0
addq $0x20, %r15
jmp 0x23d28
leaq 0xa0(%rsp), %rdi
leaq 0x188(%rsp), %rsi
callq 0x2f2f0
movq 0x8(%rbx), %r14
leaq 0x10(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
leaq 0xd8(%rsp), %rdx
callq 0x2f346
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x20042
leaq 0x10(%rsp), %rdi
callq 0x1f0a2
cmpl $0x3b, 0xd0(%rbx)
jne 0x24338
movq %rbx, %rdi
callq 0x22e24
leaq 0x10(%rsp), %rdi
leaq 0xd8(%rsp), %rdx
leaq 0x100(%rsp), %rcx
movq 0x8(%rsp), %rsi
callq 0x2f37c
leaq 0x18(%rsp), %rdi
movaps -0x8(%rdi), %xmm0
andq $0x0, (%rdi)
movups %xmm0, (%rbp)
andq $0x0, -0x8(%rdi)
callq 0x1d786
leaq 0xa0(%rsp), %rdi
callq 0x1f5c4
leaq 0xd8(%rsp), %rdi
callq 0x39102
leaq 0x60(%rsp), %rdi
callq 0x1cb1a
leaq 0xc0(%rsp), %rdi
callq 0x363f2
leaq 0x100(%rsp), %rdi
callq 0x1df38
movq %rbp, %rax
jmp 0x23e3e
leaq 0xa8(%rsp), %rdi
callq 0x1d786
xorps %xmm0, %xmm0
movups %xmm0, (%r14)
leaq 0x100(%rsp), %rdi
callq 0x1df38
movq %r14, %rax
addq $0x198, %rsp            # imm = 0x198
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x52a4d(%rip), %rsi     # 0x768a4
leaq 0x40(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x1c814
leaq 0x522c2(%rip), %rsi     # 0x76132
leaq 0x78(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x1c814
leaq 0xa0(%rsp), %rdi
leaq 0x78(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0xd8(%rsp), %rcx
callq 0x1f298
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
leaq 0xa0(%rsp), %rdx
callq 0x3f724
leaq 0x10(%rsp), %rdx
movq (%rsp), %rsi
movq 0x98(%rsp), %rcx
callq 0x25932
leaq 0x52b98(%rip), %rsi     # 0x76a6b
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x1c814
leaq 0x10(%rsp), %rdx
movq (%rsp), %rsi
movq 0x98(%rsp), %rcx
callq 0x25932
leaq 0x52b6c(%rip), %rsi     # 0x76a6b
leaq 0x100(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x1c814
leaq 0x100(%rsp), %rdx
movq (%rsp), %rsi
movq 0x98(%rsp), %rcx
callq 0x25932
leaq 0x52973(%rip), %rsi     # 0x768a4
leaq 0x40(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x1c814
leaq 0x52bba(%rip), %rsi     # 0x76b04
leaq 0x78(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x1c814
leaq 0xa0(%rsp), %rdi
leaq 0x78(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0xd8(%rsp), %rcx
callq 0x1f298
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
leaq 0xa0(%rsp), %rdx
callq 0x3f724
leaq 0x10(%rsp), %rdx
movq (%rsp), %rsi
movq 0x98(%rsp), %rcx
callq 0x25932
leaq 0x528f7(%rip), %rsi     # 0x768a4
leaq 0x10(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0x1c814
leaq 0x52b3a(%rip), %rsi     # 0x76b00
leaq 0x40(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x1c814
leaq 0x78(%rsp), %rdi
leaq 0x40(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0xd8(%rsp), %rcx
callq 0x1f298
leaq 0x100(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x3f724
leaq 0x100(%rsp), %rdx
movq (%rsp), %rsi
movq 0x98(%rsp), %rcx
callq 0x25932
leaq 0x5287b(%rip), %rsi     # 0x768a4
leaq 0x40(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x1c814
leaq 0x52abe(%rip), %rsi     # 0x76b00
leaq 0x78(%rsp), %rdi
leaq 0xd8(%rsp), %rdx
callq 0x1c814
leaq 0xa0(%rsp), %rdi
leaq 0x78(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0x3f(%rsp), %rcx
callq 0x1f298
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
leaq 0xa0(%rsp), %rdx
callq 0x3f724
leaq 0x10(%rsp), %rdx
movq (%rsp), %rsi
movq 0x98(%rsp), %rcx
callq 0x25932
leaq 0x52802(%rip), %rsi     # 0x768a4
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x1c814
leaq 0x5207a(%rip), %rsi     # 0x76132
leaq 0x40(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0x1c814
leaq 0x78(%rsp), %rdi
leaq 0x40(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0xe8(%rsp), %rcx
callq 0x1f298
leaq 0x100(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x3f724
leaq 0x100(%rsp), %rdx
movq (%rsp), %rsi
movq %r13, %rcx
callq 0x25932
leaq 0x52955(%rip), %rsi     # 0x76a6b
leaq 0x100(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x1c814
leaq 0x100(%rsp), %rdx
movq (%rsp), %rsi
movq %r13, %rcx
callq 0x25932
leaq 0x52761(%rip), %rsi     # 0x768a4
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x1c814
leaq 0x528fc(%rip), %rsi     # 0x76a55
leaq 0x40(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0x1c814
leaq 0x78(%rsp), %rdi
leaq 0x40(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0xc0(%rsp), %rcx
callq 0x1f298
leaq 0x100(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x3f724
leaq 0x100(%rsp), %rdx
movq (%rsp), %rsi
movq 0x98(%rsp), %rcx
callq 0x25932
leaq 0x526e8(%rip), %rsi     # 0x768a4
leaq 0x10(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0x1c814
leaq 0x51f5d(%rip), %rsi     # 0x76132
leaq 0x40(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x1c814
leaq 0x78(%rsp), %rdi
leaq 0x40(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0xc0(%rsp), %rcx
callq 0x1f298
leaq 0x100(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x3f724
leaq 0x100(%rsp), %rdx
movq (%rsp), %rsi
movq %r13, %rcx
callq 0x25932
leaq 0x52671(%rip), %rsi     # 0x768a4
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x1c814
leaq 0x51ee9(%rip), %rsi     # 0x76132
leaq 0x40(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0x1c814
leaq 0x78(%rsp), %rdi
leaq 0x40(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0xe8(%rsp), %rcx
callq 0x1f298
leaq 0x100(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x3f724
leaq 0x100(%rsp), %rdx
movq (%rsp), %rsi
movq %r13, %rcx
callq 0x25932
leaq 0x527c4(%rip), %rsi     # 0x76a6b
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x1c814
leaq 0x10(%rsp), %rdx
movq (%rsp), %rsi
movq %r13, %rcx
callq 0x25932
leaq 0x525d6(%rip), %rsi     # 0x768a4
leaq 0x40(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0x1c814
leaq 0x51d5e(%rip), %rsi     # 0x76045
leaq 0x78(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x1c814
leaq 0x60(%rsp), %rdi
leaq 0x78(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0xc0(%rsp), %rcx
callq 0x1f298
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0x3f724
leaq 0x10(%rsp), %rdx
movq (%rsp), %rsi
movq %r13, %rcx
callq 0x25932
leaq 0x52565(%rip), %rsi     # 0x768a4
leaq 0x40(%rsp), %rdi
leaq 0x3f(%rsp), %rdx
callq 0x1c814
leaq 0x51ddd(%rip), %rsi     # 0x76132
leaq 0x78(%rsp), %rdi
leaq 0xd7(%rsp), %rdx
callq 0x1c814
leaq 0xe8(%rsp), %rdi
leaq 0x78(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0xd6(%rsp), %rcx
callq 0x1f298
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
leaq 0xe8(%rsp), %rdx
callq 0x3f724
leaq 0x10(%rsp), %rdx
movq (%rsp), %rsi
movq %r13, %rcx
callq 0x25932
leaq 0x52708(%rip), %rsi     # 0x76abb
leaq 0x100(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x1c814
leaq 0x100(%rsp), %rdx
movq (%rsp), %rsi
movq %r13, %rcx
callq 0x25932
leaq 0x525b7(%rip), %rsi     # 0x76997
leaq 0x100(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x1c814
leaq 0x100(%rsp), %rdx
movq (%rsp), %rsi
movq %r13, %rcx
callq 0x25932
leaq 0x52497(%rip), %rsi     # 0x768a4
leaq 0x10(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0x1c814
leaq 0x51d0c(%rip), %rsi     # 0x76132
leaq 0x40(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x1c814
leaq 0x78(%rsp), %rdi
leaq 0x40(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0xc0(%rsp), %rcx
callq 0x1f298
leaq 0x100(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x3f724
leaq 0x100(%rsp), %rdx
movq (%rsp), %rsi
movq %r13, %rcx
callq 0x25932
leaq 0x52420(%rip), %rsi     # 0x768a4
leaq 0x40(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x1c814
leaq 0x51c95(%rip), %rsi     # 0x76132
leaq 0x78(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x1c814
leaq 0x60(%rsp), %rdi
leaq 0x78(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0xd8(%rsp), %rcx
callq 0x1f298
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0x3f724
leaq 0x10(%rsp), %rdx
movq (%rsp), %rsi
movq %r13, %rcx
callq 0x25932
leaq 0x523af(%rip), %rsi     # 0x768a4
leaq 0x10(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0x1c814
leaq 0x51c24(%rip), %rsi     # 0x76132
leaq 0x40(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x1c814
leaq 0x78(%rsp), %rdi
leaq 0x40(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0xc0(%rsp), %rcx
callq 0x1f298
leaq 0x100(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x3f724
leaq 0x100(%rsp), %rdx
movq (%rsp), %rsi
movq %r13, %rcx
callq 0x25932
jmp 0x245dd
jmp 0x245ef
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x101d0
jmp 0x2457e
movq %rax, %r14
leaq 0x60(%rsp), %rdi
callq 0x1cea0
jmp 0x24628
jmp 0x245dd
jmp 0x245ef
movq %rdx, %r15
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x101d0
jmp 0x245a9
movq %rdx, %r15
movq %rax, %r14
leaq 0xe8(%rsp), %rdi
callq 0x1cea0
jmp 0x2463c
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x101d0
jmp 0x245cd
movq %rax, %r14
leaq 0x60(%rsp), %rdi
callq 0x1cea0
jmp 0x2464b
jmp 0x24602
jmp 0x24614
movq %rax, %r14
leaq 0x100(%rsp), %rdi
callq 0x101d0
jmp 0x245f2
movq %rax, %r14
leaq 0x78(%rsp), %rdi
callq 0x1cea0
jmp 0x2465c
jmp 0x24602
jmp 0x24614
movq %rax, %r14
leaq 0x100(%rsp), %rdi
callq 0x101d0
jmp 0x24617
movq %rax, %r14
leaq 0x78(%rsp), %rdi
callq 0x1cea0
jmp 0x2466d
jmp 0x24659
movq %rax, %r14
leaq 0x78(%rsp), %rdi
callq 0x101d0
jmp 0x2467e
jmp 0x24659
movq %rdx, %r15
movq %rax, %r14
leaq 0x78(%rsp), %rdi
callq 0x101d0
jmp 0x24695
movq %rax, %r14
leaq 0x78(%rsp), %rdi
callq 0x101d0
jmp 0x246a7
jmp 0x2466a
movq %rax, %r14
leaq 0x40(%rsp), %rdi
callq 0x101d0
jmp 0x246b3
jmp 0x2466a
movq %rax, %r14
leaq 0x40(%rsp), %rdi
callq 0x101d0
jmp 0x246c7
jmp 0x246b0
movq %rax, %r14
leaq 0x40(%rsp), %rdi
callq 0x101d0
jmp 0x24766
jmp 0x246b0
movq %rdx, %r15
movq %rax, %r14
leaq 0x40(%rsp), %rdi
callq 0x101d0
jmp 0x24a20
movq %rax, %r14
leaq 0x40(%rsp), %rdi
jmp 0x2472a
jmp 0x246c4
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x101d0
jmp 0x24831
jmp 0x246c4
movq %rax, %r14
leaq 0x10(%rsp), %rdi
jmp 0x249ec
jmp 0x2482e
jmp 0x24763
jmp 0x2482e
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x101d0
jmp 0x246f2
movq %rax, %r14
leaq 0xa0(%rsp), %rdi
callq 0x1cea0
jmp 0x24785
jmp 0x249e1
jmp 0x249f6
jmp 0x249e1
jmp 0x249f6
jmp 0x24a1a
jmp 0x248ba
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x101d0
jmp 0x24ae4
jmp 0x248ba
jmp 0x249f6
jmp 0x2482e
jmp 0x249f6
jmp 0x249e1
jmp 0x249f6
jmp 0x249f6
jmp 0x2482e
jmp 0x2482e
jmp 0x24763
movq %rax, %r14
leaq 0xa8(%rsp), %rdi
callq 0x1d786
jmp 0x24ae4
jmp 0x2482e
jmp 0x2482e
movq %rax, %r14
leaq 0x78(%rsp), %rdi
callq 0x101d0
jmp 0x24874
movq %rax, %r14
leaq 0x100(%rsp), %rdi
callq 0x101d0
jmp 0x247a9
movq %rax, %r14
leaq 0x78(%rsp), %rdi
callq 0x1cea0
jmp 0x24886
jmp 0x24a1a
movq %rdx, %r15
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x1f0a2
jmp 0x24a20
jmp 0x24a1a
movq %rdx, %r15
movq %rax, %r14
leaq 0x18(%rsp), %rdi
callq 0x1d786
jmp 0x247ef
movq %rdx, %r15
movq %rax, %r14
leaq 0x48(%rsp), %rdi
callq 0x1d786
jmp 0x24801
movq %rdx, %r15
movq %rax, %r14
leaq 0x80(%rsp), %rdi
callq 0x1d786
jmp 0x24a3a
movq %rdx, %r15
movq %rax, %r14
jmp 0x24a3a
movq %rdx, %r15
movq %rax, %r14
jmp 0x24a51
jmp 0x248ba
movq %rax, %r14
leaq 0x68(%rsp), %rdi
callq 0x1d786
jmp 0x24b00
jmp 0x24ad7
jmp 0x24899
jmp 0x248a8
jmp 0x24ad7
jmp 0x248ba
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x39102
jmp 0x24b00
jmp 0x248ba
movq %rax, %r14
movq %r15, %rdi
jmp 0x24afb
jmp 0x248ba
movq %rax, %r14
leaq 0x40(%rsp), %rdi
callq 0x101d0
jmp 0x249cf
movq %rax, %r14
leaq 0x40(%rsp), %rdi
callq 0x101d0
jmp 0x248c7
jmp 0x24a1a
jmp 0x248d8
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x101d0
jmp 0x248ab
movq %rax, %r14
leaq 0xa0(%rsp), %rdi
callq 0x1cea0
jmp 0x248db
movq %rax, %r14
jmp 0x24ae4
jmp 0x248e7
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x101d0
jmp 0x24af6
jmp 0x248f9
movq %rax, %r14
leaq 0x78(%rsp), %rdi
callq 0x101d0
jmp 0x248fc
movq %rax, %r14
jmp 0x249cf
jmp 0x24af3
jmp 0x24ad7
movq %rax, %r14
leaq 0x40(%rsp), %rdi
jmp 0x24a06
jmp 0x24af3
movq %rdx, %r15
movq %rax, %r14
leaq 0x78(%rsp), %rdi
callq 0x39102
jmp 0x24923
movq %rdx, %r15
movq %rax, %r14
leaq 0xa8(%rsp), %rdi
callq 0x1d786
jmp 0x24950
movq %rdx, %r15
movq %rax, %r14
jmp 0x2495d
movq %rdx, %r15
movq %rax, %r14
jmp 0x2496a
movq %rdx, %r15
movq %rax, %r14
jmp 0x2497e
movq %rdx, %r15
movq %rax, %r14
leaq 0xc8(%rsp), %rdi
callq 0x1d786
leaq 0xe0(%rsp), %rdi
callq 0x1d786
leaq 0x10(%rsp), %rdi
callq 0x1cb1a
leaq 0x40(%rsp), %rdi
callq 0x363f2
cmpl $0x1, %r15d
jne 0x249cf
movq %r14, %rdi
callq 0x10190
leaq 0x5213c(%rip), %rsi     # 0x76acf
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x1c814
leaq 0x10(%rsp), %rdx
leaq 0x100(%rsp), %rcx
movq (%rsp), %rsi
callq 0x25932
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x101d0
jmp 0x249ca
movq %rax, %r14
callq 0x10680
leaq 0x100(%rsp), %rdi
callq 0x1df38
jmp 0x24af6
movq %rax, %r14
leaq 0x100(%rsp), %rdi
callq 0x101d0
jmp 0x24b00
movq %rax, %r14
jmp 0x24b00
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x101d0
jmp 0x24ada
jmp 0x24ad7
jmp 0x24ad7
movq %rdx, %r15
movq %rax, %r14
leaq 0xa0(%rsp), %rdi
callq 0x1f5c4
leaq 0xd8(%rsp), %rdi
callq 0x39102
leaq 0x60(%rsp), %rdi
callq 0x1cb1a
leaq 0xc0(%rsp), %rdi
callq 0x363f2
cmpl $0x1, %r15d
jne 0x24ae4
movq %r14, %rdi
callq 0x10190
leaq 0x52065(%rip), %rsi     # 0x76acf
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x1c814
leaq 0x10(%rsp), %rdx
leaq 0x100(%rsp), %rcx
movq (%rsp), %rsi
callq 0x25932
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x101d0
jmp 0x24aa1
movq %rax, %r14
callq 0x10680
jmp 0x24ae4
movq %rax, %rdi
callq 0x1ca72
movq %rax, %r14
leaq 0x100(%rsp), %rdi
callq 0x1f0a2
jmp 0x24ac5
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x39102
jmp 0x24af6
jmp 0x24af3
jmp 0x24ad7
jmp 0x24af3
movq %rax, %r14
leaq 0x60(%rsp), %rdi
callq 0x1f5c4
leaq 0x100(%rsp), %rdi
callq 0x1df38
jmp 0x24b00
movq %rax, %r14
leaq 0x60(%rsp), %rdi
callq 0x1f5c4
movq %r14, %rdi
callq 0x106f0