// File: /workspace/github_cpp_makefile_star2_O2/Nallantli[P]Rossa/main/rossa/instruction/instruction.cpp
// Function: CastToI::evaluate(object_t const*, std::vector<std::pair<token_t, function_t>, std::allocator<std::pair<token_t, function_t>>>&) const
const symbol_t CastToI::evaluate(const object_t *scope, trace_t &stack_trace) const
{
	const symbol_t evalA = a->evaluate(scope, stack_trace);
	const parameter_t convert = b->evaluate(scope, stack_trace).getTypeName(&token, stack_trace);

	switch (evalA.getValueType())
	{
	case value_type_enum::NUMBER:
		switch (convert.getBase().back())
		{
		case value_type_enum::NUMBER:
			return evalA;
		case value_type_enum::STRING:
			return symbol_t::String(evalA.toString(&token, stack_trace));
		case value_type_enum::BOOLEAN_D:
			return symbol_t::Boolean(evalA.getNumber(&token, stack_trace).getLong() != 0);
		default:
			break;
		}
		break;
	case value_type_enum::STRING:
		switch (convert.getBase().back())
		{
		case value_type_enum::NUMBER:
			try
			{
				const std::string s = evalA.getString(&token, stack_trace);
				if (s.length() > 2 && s[0] == '0' && isalpha(s[1]))
				{
					switch (s[1])
					{
					case 'b':
					case 'B':
						return symbol_t::Number(number_t::Long(std::stoll(s.substr(2), nullptr, 2)));
					default:
						return symbol_t::Number(number_t::Long(std::stoll(s, nullptr, 0)));
					}
				}
				return symbol_t::Number(number_t::Double(std::stold(s)));
			}
			catch (const std::invalid_argument &e)
			{
				throw rossa_error_t(util::format(_FAILURE_STR_TO_NUM_, {evalA.getString(&token, stack_trace)}), token, stack_trace);
			}
		case value_type_enum::STRING:
			return evalA;
		case value_type_enum::BOOLEAN_D:
			return symbol_t::Boolean(evalA.getString(&token, stack_trace) == KEYWORD_TRUE);
		case value_type_enum::ARRAY:
		{
			std::string str = evalA.getString(&token, stack_trace);
			std::vector<symbol_t> nv;
			int last = 0;
			int c, i, ix, q, s;
			for (q = 0, i = 0, ix = str.size(); i < ix; i++, q++)
			{
				c = static_cast<unsigned char>(str[i]);
				if (c >= 0 && c <= 127)
				{
					i += 0;
					s = 1;
				}
				else if ((c & 0xE0) == 0xC0)
				{
					i += 1;
					s = 2;
				}
				else if ((c & 0xF0) == 0xE0)
				{
					i += 2;
					s = 3;
				}
				else if ((c & 0xF8) == 0xF0)
				{
					i += 3;
					s = 4;
				}
				else
				{
					nv.clear();
					for (size_t i = 0; i < str.size(); i++)
						nv.push_back(symbol_t::String(std::string(1, str[i])));
					return symbol_t::Array(nv);
				}
				nv.push_back(symbol_t::String(str.substr(last, s)));
				last = i + 1;
			}
			return symbol_t::Array(nv);
		}
		case value_type_enum::TYPE_NAME:
		{
			const std::string s = evalA.getString(&token, stack_trace);
			if (s == KEYWORD_NUMBER)
				return symbol_t::TypeName(parameter_t({}, {value_type_enum::NUMBER}));
			if (s == KEYWORD_STRING)
				return symbol_t::TypeName(parameter_t({}, {value_type_enum::STRING}));
			if (s == KEYWORD_BOOLEAN)
				return symbol_t::TypeName(parameter_t({}, {value_type_enum::BOOLEAN_D}));
			if (s == KEYWORD_ARRAY)
				return symbol_t::TypeName(parameter_t({}, {value_type_enum::ARRAY}));
			if (s == KEYWORD_DICTIONARY)
				return symbol_t::TypeName(parameter_t({}, {value_type_enum::DICTIONARY}));
			if (s == KEYWORD_FUNCTION)
				return symbol_t::TypeName(parameter_t({}, {value_type_enum::FUNCTION}));
			if (s == KEYWORD_OBJECT)
				return symbol_t::TypeName(parameter_t({}, {value_type_enum::OBJECT}));
			if (s == KEYWORD_TYPE)
				return symbol_t::TypeName(parameter_t({}, {value_type_enum::TYPE_NAME}));
			if (s == KEYWORD_NIL_NAME)
				return symbol_t::TypeName(parameter_t({}, {value_type_enum::NIL}));
			if (s == KEYWORD_POINTER)
				return symbol_t::TypeName(parameter_t({}, {value_type_enum::POINTER}));
			// TODO
			// return symbol_t::TypeName(ROSSA_HASH(evalA.getString(&token, stack_trace)));
		}
		default:
			break;
		}
		break;
	case value_type_enum::BOOLEAN_D:
		switch (convert.getBase().back())
		{
		case value_type_enum::NUMBER:
			return symbol_t::Number(number_t::Long(evalA.getBool(&token, stack_trace) ? 1 : 0));
		case value_type_enum::STRING:
			return symbol_t::String(evalA.getBool(&token, stack_trace) ? "true" : "false");
		case value_type_enum::BOOLEAN_D:
			return evalA;
		default:
			break;
		}
		break;
	case value_type_enum::ARRAY:
		switch (convert.getBase().back())
		{
		case value_type_enum::STRING:
			return symbol_t::String(evalA.toString(&token, stack_trace));
		case value_type_enum::ARRAY:
			return evalA;
		case value_type_enum::DICTIONARY:
		{
			const std::vector<symbol_t> v = evalA.getVector(&token, stack_trace);
			std::map<const std::string, const symbol_t> nd;
			for (size_t i = 0; i < v.size(); i++)
				nd.insert({std::to_string(i), v[i]});
			return symbol_t::Dictionary(nd);
		}
		default:
			break;
		}
		break;
	case value_type_enum::DICTIONARY:
		switch (convert.getBase().back())
		{
		case value_type_enum::STRING:
			return symbol_t::String(evalA.toString(&token, stack_trace));
		case value_type_enum::ARRAY:
		{
			const std::map<const std::string, const symbol_t> dict = evalA.getDictionary(&token, stack_trace);
			std::vector<symbol_t> nv;
			for (auto &&e : dict)
			{
				std::vector<symbol_t> l = {symbol_t::String(e.first), e.second};
				nv.push_back(symbol_t::Array(l));
			}
			return symbol_t::Array(nv);
		}
		case value_type_enum::DICTIONARY:
			return evalA;
		default:
			break;
		}
		break;
	case value_type_enum::OBJECT:
	{
		if (convert == evalA.getAugValueType())
			return evalA;
		const hash_ull fname = ROSSA_HASH("->" + convert.toString());
		object_t *o = evalA.getObject(&token, stack_trace);
		if (o->hasValue(fname))
			return o->getVariable(fname, &token, stack_trace).call({}, &token, stack_trace);
		break;
	}
	case value_type_enum::TYPE_NAME:
		switch (convert.getBase().back())
		{
		case value_type_enum::STRING:
			return symbol_t::String("Type::" + evalA.getTypeName(&token, stack_trace).toString());
		case value_type_enum::TYPE_NAME:
			return evalA;
		default:
			break;
		}
		break;
	case value_type_enum::NIL:
		switch (convert.getBase().back())
		{
		case value_type_enum::STRING:
			return symbol_t::String(KEYWORD_NIL);
		default:
			break;
		}
		break;
	default:
		break;
	}

	const hash_ull fname = ROSSA_HASH("->" + convert.toString());
	return scope->getVariable(fname, &token, stack_trace).call({evalA}, &token, stack_trace);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x138, %rsp            # imm = 0x138
movq %rcx, %r14
movq %rdx, %r12
movq %rsi, %r15
movq %rdi, %rbp
movq 0x90(%rsi), %rsi
movq (%rsi), %rax
leaq 0xa8(%rsp), %rdi
callq *(%rax)
movq 0xa0(%r15), %rsi
movq (%rsi), %rax
leaq 0x50(%rsp), %rdi
movq %r12, %rdx
movq %r14, %rcx
callq *(%rax)
addq $0x8, %r15
leaq 0xf0(%rsp), %rdi
leaq 0x50(%rsp), %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x39d52
leaq 0x50(%rsp), %rdi
callq 0x39102
leaq 0xa8(%rsp), %rdi
callq 0x39ca6
addl $0x9, %eax
cmpl $0x8, %eax
ja 0x68d04
leaq 0x1249c(%rip), %rcx     # 0x7a3a4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x50(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x371da
leaq 0x50(%rsp), %rdi
movq 0x8(%rdi), %rax
movq -0x8(%rax), %rbx
callq 0x2fa2a
cmpq $-0x9, %rbx
je 0x68384
cmpq $-0x4, %rbx
jne 0x68d04
leaq 0x50(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x39d52
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x36f0a
leaq 0x1283a(%rip), %rsi     # 0x7a7b1
leaq 0xb8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x1cb73
leaq 0xb8(%rsp), %rsi
movq %rbp, %rdi
callq 0x390d4
leaq 0xb8(%rsp), %rdi
callq 0x101d0
leaq 0x10(%rsp), %rdi
callq 0x101d0
leaq 0x50(%rsp), %rdi
callq 0x2e9f6
jmp 0x68dd2
leaq 0x50(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x371da
leaq 0x50(%rsp), %rdi
movq 0x8(%rdi), %rax
movq -0x8(%rax), %rbx
callq 0x2fa2a
cmpq $-0x4, %rbx
je 0x68399
cmpq $-0x3, %rbx
je 0x68384
cmpq $-0x2, %rbx
jne 0x68d04
leaq 0xa8(%rsp), %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x39b5c
movzbl %al, %eax
leaq 0xb8(%rsp), %rdi
movq %rax, (%rdi)
callq 0x3ecba
leaq 0x50(%rsp), %rsi
movq %rax, (%rsi)
movl %edx, 0x8(%rsi)
movq %rbp, %rdi
callq 0x39080
jmp 0x68dd2
leaq 0x50(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x39cac
leaq 0xf0(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x373e2
movl %eax, %ebx
leaq 0x50(%rsp), %rdi
callq 0x2e9f6
testb %bl, %bl
jne 0x68384
leaq 0xb8(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x36f0a
leaq 0xdf90(%rip), %rsi      # 0x76023
leaq 0x50(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x1cb73
leaq 0x4e85c(%rip), %rdi     # 0xb6908
leaq 0x50(%rsp), %rsi
callq 0x1efb0
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x101d0
leaq 0xb8(%rsp), %rdi
callq 0x101d0
movq %rbx, 0x10(%rsp)
leaq 0xa8(%rsp), %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x39c02
movq %rax, %rbx
leaq 0x10(%rsp), %rsi
movq %rax, %rdi
callq 0x366b2
testb %al, %al
je 0x68d04
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
movq %r15, %rdx
movq %r14, %rcx
callq 0x366ec
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %rdx
movaps %xmm0, (%rdx)
andq $0x0, 0x10(%rdx)
movq %rbp, %rdi
movq %rax, %rsi
movq %r15, %rcx
movq %r14, %r8
callq 0x3aa8c
leaq 0x50(%rsp), %rdi
jmp 0x685ef
leaq 0x50(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x371da
leaq 0x50(%rsp), %rdi
movq 0x8(%rdi), %rax
movq -0x8(%rax), %rbx
callq 0x2fa2a
cmpq $-0x4, %rbx
je 0x68502
cmpq $-0x3, %rbx
je 0x683e4
cmpq $-0x2, %rbx
jne 0x68d04
jmp 0x68384
leaq 0x50(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x371da
leaq 0x50(%rsp), %rdi
movq 0x8(%rdi), %rax
movq -0x8(%rax), %rbx
callq 0x2fa2a
cmpq $-0x4, %rbx
jne 0x68d04
leaq 0xf715(%rip), %rsi      # 0x778cf
leaq 0x50(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x1c814
leaq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x390d4
jmp 0x68a00
leaq 0x50(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x371da
leaq 0x50(%rsp), %rdi
movq 0x8(%rdi), %rax
movq -0x8(%rax), %rbx
callq 0x2fa2a
cmpq $-0x7, %rbx
je 0x68384
cmpq $-0x5, %rbx
je 0x68417
cmpq $-0x4, %rbx
jne 0x68d04
leaq 0x50(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x3a326
leaq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x390d4
jmp 0x68a00
leaq 0x50(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x371da
leaq 0x50(%rsp), %rdi
movq 0x8(%rdi), %rax
movq -0x8(%rax), %rbx
callq 0x2fa2a
cmpq $-0x7, %rbx
je 0x6852c
cmpq $-0x5, %rbx
je 0x68384
cmpq $-0x4, %rbx
jne 0x68d04
leaq 0x50(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x3a326
leaq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x390d4
jmp 0x68a00
leaq 0x50(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x371da
leaq 0x50(%rsp), %rdi
movq 0x8(%rdi), %rax
movq -0x8(%rax), %rbx
callq 0x2fa2a
addq $0x9, %rbx
cmpq $0x7, %rbx
ja 0x68d04
leaq 0x120d9(%rip), %rax     # 0x7a3c8
movslq (%rax,%rbx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0xb8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x39aa6
leaq 0x12490(%rip), %rsi     # 0x7a7aa
leaq 0xb8(%rsp), %rdi
callq 0x1c7a0
testb %al, %al
je 0x68820
andq $0x0, 0x20(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xa0(%rsp), %rsi
movq $-0x2, (%rsi)
leaq 0x38(%rsp), %rdi
pushq $0x1
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x2e9c0
leaq 0x50(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x36e60
leaq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x39072
jmp 0x68ccc
leaq 0xa8(%rsp), %rsi
movq %rbp, %rdi
callq 0x390f0
jmp 0x68dd2
leaq 0xa8(%rsp), %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x39b5c
leaq 0xdcd8(%rip), %rcx      # 0x7608b
leaq 0xde22(%rip), %rsi      # 0x761dc
testb %al, %al
cmovneq %rcx, %rsi
leaq 0x50(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x1c814
leaq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x390d4
jmp 0x68a00
leaq 0xa8(%rsp), %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x3968c
movq %rax, %rdi
callq 0x3edf8
testq %rax, %rax
leaq 0x50(%rsp), %rsi
setne (%rsi)
movq %rbp, %rdi
callq 0x3908e
jmp 0x68dd2
movq %rbp, 0xe8(%rsp)
leaq 0xa8(%rsp), %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x397e6
leaq 0x50(%rsp), %rdi
movq %rax, %rsi
callq 0x3d37a
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rax
movaps %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x58(%rsp), %rax
movq 0x10(%rax), %r13
leaq 0xb8(%rsp), %r12
leaq 0x38(%rsp), %rbp
leaq 0xa0(%rsp), %r15
pushq $0x10
popq %r14
leaq 0x58(%rsp), %rax
cmpq %rax, %r13
je 0x685f9
leaq 0x20(%r13), %rsi
movq %r12, %rdi
callq 0x390d4
leaq 0x40(%r13), %rsi
leaq 0xc8(%rsp), %rdi
callq 0x390f0
movq %rbp, %rdi
movq %r12, %rsi
pushq $0x2
popq %rdx
movq %r15, %rcx
callq 0x3ba84
movq %r14, %rbx
leaq (%rsp,%rbx), %rdi
addq $0xb8, %rdi
callq 0x39102
addq $-0x10, %rbx
cmpq $-0x10, %rbx
jne 0x684b0
movq %r12, %rdi
movq %rbp, %rsi
callq 0x3909c
leaq 0x10(%rsp), %rdi
movq %r12, %rsi
callq 0x1f00a
movq %r12, %rdi
callq 0x39102
movq %rbp, %rdi
callq 0x1f0b8
movq %r13, %rdi
callq 0x104a0
movq %rax, %r13
jmp 0x68471
leaq 0x50(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x3a326
leaq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x390d4
jmp 0x68a00
leaq 0xa8(%rsp), %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x39a02
leaq 0x38(%rsp), %rdi
movq %rax, %rsi
callq 0x3bbc0
leaq 0x58(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
xorl %r13d, %r13d
leaq 0x10(%rsp), %rbx
leaq 0xb8(%rsp), %r14
leaq 0x50(%rsp), %r15
xorl %r12d, %r12d
movq 0x40(%rsp), %rax
subq 0x38(%rsp), %rax
sarq $0x4, %rax
cmpq %rax, %r12
jae 0x685d3
movq %rbx, %rdi
movq %r12, %rsi
callq 0x1f201
movq 0x38(%rsp), %rdx
addq %r13, %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6bfc6
movq %r15, %rdi
movq %r14, %rsi
callq 0x3dfc6
movq %r14, %rdi
callq 0x3bbaa
movq %rbx, %rdi
callq 0x101d0
incq %r12
addq $0x10, %r13
jmp 0x6857e
leaq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x390e2
leaq 0x50(%rsp), %rdi
callq 0x3bdb2
leaq 0x38(%rsp), %rdi
callq 0x1f0b8
jmp 0x68dd2
leaq 0x10(%rsp), %rsi
movq 0xe8(%rsp), %rbp
movq %rbp, %rdi
callq 0x3909c
leaq 0x10(%rsp), %rdi
callq 0x1f0b8
leaq 0x50(%rsp), %rdi
callq 0x3bdb2
jmp 0x68dd2
movq %rbp, 0xe8(%rsp)
leaq 0x50(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x39aa6
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %r14
andq $0x0, 0x10(%r14)
movaps %xmm0, (%r14)
leaq 0x50(%rsp), %r15
movl 0x8(%r15), %ebp
xorl %ebx, %ebx
leaq 0xb8(%rsp), %r12
leaq 0x38(%rsp), %r13
cmpl %ebp, %ebx
jge 0x689e1
movslq %ebx, %rdx
movq 0x50(%rsp), %rax
movzbl (%rax,%rdx), %eax
testb %al, %al
js 0x6868c
pushq $0x1
jmp 0x686c6
movl %eax, %ecx
andl $-0x20, %ecx
cmpl $0xc0, %ecx
jne 0x6869f
incl %ebx
pushq $0x2
jmp 0x686c6
movl %eax, %ecx
andl $-0x10, %ecx
cmpl $0xe0, %ecx
jne 0x686b3
addl $0x2, %ebx
pushq $0x3
jmp 0x686c6
andl $-0x8, %eax
cmpl $0xf0, %eax
jne 0x6896b
addl $0x3, %ebx
pushq $0x4
popq %rcx
movq %r12, %rdi
movq %r15, %rsi
callq 0x10410
movq %r13, %rdi
movq %r12, %rsi
callq 0x390d4
movq %r14, %rdi
movq %r13, %rsi
callq 0x1f00a
movq %r13, %rdi
callq 0x39102
movq %r12, %rdi
callq 0x101d0
incl %ebx
jmp 0x68670
leaq 0x50(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x39aa6
leaq 0xd96d(%rip), %rsi      # 0x7608b
leaq 0x50(%rsp), %rdi
callq 0x1c7a0
leaq 0xb8(%rsp), %rsi
movb %al, (%rsi)
movq %rbp, %rdi
callq 0x3908e
jmp 0x68a00
leaq 0x50(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x39aa6
cmpq $0x3, 0x58(%rsp)
jb 0x687e7
movq 0x50(%rsp), %rax
cmpb $0x30, (%rax)
jne 0x687e7
movsbl 0x1(%rax), %ebx
movl %ebx, %edi
callq 0x10640
testl %eax, %eax
je 0x687e7
movzbl %bl, %eax
orl $0x20, %eax
cmpl $0x62, %eax
jne 0x68a80
leaq 0xb8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
pushq $0x2
popq %rdx
pushq $-0x1
popq %rcx
callq 0x10410
leaq 0xb8(%rsp), %rdi
pushq $0x2
popq %rdx
xorl %esi, %esi
callq 0x2e770
leaq 0x38(%rsp), %rdi
movq %rax, (%rdi)
callq 0x3ecba
leaq 0x10(%rsp), %rsi
movq %rax, (%rsi)
movl %edx, 0x8(%rsi)
movq %rbp, %rdi
callq 0x39080
leaq 0xb8(%rsp), %rdi
callq 0x101d0
jmp 0x68a00
leaq 0x50(%rsp), %rdi
xorl %esi, %esi
callq 0x6bfa4
fstpl 0x10(%rsp)
leaq 0x10(%rsp), %rdi
callq 0x3ec9a
leaq 0xb8(%rsp), %rsi
movq %rax, (%rsi)
movl %edx, 0x8(%rsi)
movq %rbp, %rdi
callq 0x39080
fldz
fstp %st(0)
jmp 0x68a00
leaq 0x11fd4(%rip), %rsi     # 0x7a7fb
leaq 0xb8(%rsp), %rdi
callq 0x1c7a0
testb %al, %al
je 0x6888d
andq $0x0, 0x20(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xa0(%rsp), %rsi
movq $-0x4, (%rsi)
leaq 0x38(%rsp), %rdi
pushq $0x1
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x2e9c0
leaq 0x50(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x36e60
leaq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x39072
jmp 0x68ccc
leaq 0xdcac(%rip), %rsi      # 0x76540
leaq 0xb8(%rsp), %rdi
callq 0x1c7a0
testb %al, %al
je 0x688fa
andq $0x0, 0x20(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xa0(%rsp), %rsi
movq $-0x3, (%rsi)
leaq 0x38(%rsp), %rdi
pushq $0x1
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x2e9c0
leaq 0x50(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x36e60
leaq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x39072
jmp 0x68ccc
leaq 0xdc39(%rip), %rsi      # 0x7653a
leaq 0xb8(%rsp), %rdi
callq 0x1c7a0
testb %al, %al
je 0x68a0f
andq $0x0, 0x20(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xa0(%rsp), %rsi
movq $-0x5, (%rsi)
leaq 0x38(%rsp), %rdi
pushq $0x1
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x2e9c0
leaq 0x50(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x36e60
leaq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x39072
jmp 0x68ccc
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x6bfbe
leaq 0xc8(%rsp), %r13
xorl %ebp, %ebp
leaq 0xb8(%rsp), %r14
pushq $0x1
popq %r15
leaq 0x38(%rsp), %r12
cmpq 0x58(%rsp), %rbp
jae 0x689e1
movq 0x50(%rsp), %rax
movsbl (%rax,%rbp), %edx
movq %r13, 0xb8(%rsp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x104b0
movq %r12, %rdi
movq %r14, %rsi
callq 0x390d4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x1f00a
movq %r12, %rdi
callq 0x39102
movq %r14, %rdi
callq 0x101d0
incq %rbp
jmp 0x68993
leaq 0x10(%rsp), %rsi
movq 0xe8(%rsp), %rbp
movq %rbp, %rdi
callq 0x3909c
leaq 0x10(%rsp), %rdi
callq 0x1f0b8
leaq 0x50(%rsp), %rdi
callq 0x101d0
jmp 0x68dd2
leaq 0xdb32(%rip), %rsi      # 0x76548
leaq 0xb8(%rsp), %rdi
callq 0x1c7a0
testb %al, %al
je 0x68ab6
andq $0x0, 0x20(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xa0(%rsp), %rsi
movq $-0x7, (%rsi)
leaq 0x38(%rsp), %rdi
pushq $0x1
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x2e9c0
leaq 0x50(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x36e60
leaq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x39072
jmp 0x68ccc
leaq 0x50(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2e770
leaq 0x10(%rsp), %rdi
movq %rax, (%rdi)
callq 0x3ecba
leaq 0xb8(%rsp), %rsi
movq %rax, (%rsi)
movl %edx, 0x8(%rsi)
movq %rbp, %rdi
callq 0x39080
jmp 0x68a00
leaq 0xda96(%rip), %rsi      # 0x76553
leaq 0xb8(%rsp), %rdi
callq 0x1c7a0
testb %al, %al
je 0x68b23
andq $0x0, 0x20(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xa0(%rsp), %rsi
movq $-0x6, (%rsi)
leaq 0x38(%rsp), %rdi
pushq $0x1
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x2e9c0
leaq 0x50(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x36e60
leaq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x39072
jmp 0x68ccc
leaq 0x11c55(%rip), %rsi     # 0x7a77f
leaq 0xb8(%rsp), %rdi
callq 0x1c7a0
testb %al, %al
je 0x68b90
andq $0x0, 0x20(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xa0(%rsp), %rsi
movq $-0x8, (%rsi)
leaq 0x38(%rsp), %rdi
pushq $0x1
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x2e9c0
leaq 0x50(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x36e60
leaq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x39072
jmp 0x68ccc
leaq 0xd9c5(%rip), %rsi      # 0x7655c
leaq 0xb8(%rsp), %rdi
callq 0x1c7a0
testb %al, %al
je 0x68bfd
andq $0x0, 0x20(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xa0(%rsp), %rsi
movq $-0x9, (%rsi)
leaq 0x38(%rsp), %rdi
pushq $0x1
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x2e9c0
leaq 0x50(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x36e60
leaq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x39072
jmp 0x68ccc
leaq 0xd9a2(%rip), %rsi      # 0x765a6
leaq 0xb8(%rsp), %rdi
callq 0x1c7a0
testb %al, %al
je 0x68c64
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
andq $0x0, 0x20(%rsp)
leaq 0xa0(%rsp), %rsi
orq $-0x1, (%rsi)
leaq 0x38(%rsp), %rdi
pushq $0x1
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x2e9c0
leaq 0x50(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x36e60
leaq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x39072
jmp 0x68ccc
leaq 0xd93f(%rip), %rsi      # 0x765aa
leaq 0xb8(%rsp), %rdi
callq 0x1c7a0
testb %al, %al
je 0x68cf7
andq $0x0, 0x20(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xa0(%rsp), %rsi
movq $-0xa, (%rsi)
leaq 0x38(%rsp), %rdi
pushq $0x1
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x2e9c0
leaq 0x50(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x36e60
leaq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x39072
leaq 0x50(%rsp), %rdi
callq 0x2e9f6
leaq 0x38(%rsp), %rdi
callq 0x2fa2a
leaq 0x10(%rsp), %rdi
callq 0x2e99e
leaq 0xb8(%rsp), %rdi
jmp 0x68a05
leaq 0xb8(%rsp), %rdi
callq 0x101d0
leaq 0xb8(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x36f0a
leaq 0xd303(%rip), %rsi      # 0x76023
leaq 0x50(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x1cb73
leaq 0x4dbcf(%rip), %rdi     # 0xb6908
leaq 0x50(%rsp), %rsi
callq 0x1efb0
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x101d0
leaq 0xb8(%rsp), %rdi
callq 0x101d0
leaq 0x10(%rsp), %rsi
movq %rbx, (%rsi)
movq %r12, %rdi
movq %r15, %rdx
movq %r14, %rcx
callq 0x366ec
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x390f0
leaq 0x50(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0x38(%rsp), %rcx
callq 0x3ba84
leaq 0x50(%rsp), %rdx
movq %rbp, %rdi
movq %rbx, %rsi
movq %r15, %rcx
movq %r14, %r8
callq 0x3aa8c
leaq 0x50(%rsp), %rdi
callq 0x1f0b8
leaq 0xb8(%rsp), %rdi
callq 0x39102
leaq 0xf0(%rsp), %rdi
callq 0x2e9f6
leaq 0xa8(%rsp), %rdi
callq 0x39102
movq %rbp, %rax
addq $0x138, %rsp            # imm = 0x138
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x68e59
jmp 0x68e68
jmp 0x68e77
jmp 0x68e59
jmp 0x68e68
jmp 0x68e77
jmp 0x68e59
jmp 0x68e68
jmp 0x68e77
jmp 0x68e59
jmp 0x68e68
jmp 0x68e77
jmp 0x68e59
jmp 0x68e68
jmp 0x68e77
jmp 0x68e59
jmp 0x68e68
jmp 0x68e77
jmp 0x68e59
jmp 0x68e68
jmp 0x68e77
jmp 0x68ef0
jmp 0x68ef0
jmp 0x68e59
jmp 0x68e68
jmp 0x68e77
movq %rdx, %r12
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x101d0
jmp 0x68ef6
jmp 0x68e59
jmp 0x68e68
jmp 0x68e77
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x2e9f6
jmp 0x68e6b
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x2fa2a
jmp 0x68e7a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2e99e
jmp 0x690ff
jmp 0x6912f
jmp 0x6905a
movq %rdx, %r12
movq %rax, %rbx
jmp 0x68f00
jmp 0x69208
jmp 0x69208
jmp 0x69208
jmp 0x691a1
jmp 0x691db
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
jmp 0x691ed
jmp 0x6905a
jmp 0x6905a
jmp 0x69208
jmp 0x6905a
jmp 0x6905a
jmp 0x69208
jmp 0x69208
jmp 0x69208
jmp 0x69208
fstp %st(0)
movq %rdx, %r12
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x101d0
cmpl $0x1, %r12d
jne 0x6920b
movq %rbx, %rdi
callq 0x10190
movl $0xa8, %edi
callq 0x101f0
movq %rax, %r12
leaq 0x11860(%rip), %rsi     # 0x7a786
leaq 0xb8(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0x1c814
leaq 0x10(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x39aa6
leaq 0x38(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x1f298
leaq 0x50(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x3f724
movb $0x1, %bpl
leaq 0x50(%rsp), %rsi
movq %r12, %rdi
movq %r15, %rdx
movq %r14, %rcx
callq 0x3ebb8
xorl %ebp, %ebp
leaq 0x48d00(%rip), %rsi     # 0xb1ca0
leaq -0x39b35(%rip), %rdx    # 0x2f472
movq %r12, %rdi
callq 0x106c0
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x101d0
jmp 0x68fc4
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x38(%rsp), %rdi
callq 0x1cea0
jmp 0x68fd6
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x10(%rsp), %rdi
callq 0x101d0
jmp 0x68fe8
movq %rax, %rbx
movb $0x1, %bpl
leaq 0xb8(%rsp), %rdi
callq 0x101d0
testb %bpl, %bpl
jne 0x68fff
jmp 0x69007
movq %rax, %rbx
movq %r12, %rdi
callq 0x102e0
callq 0x10680
jmp 0x6920b
movq %rax, %rdi
callq 0x1ca72
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x101d0
jmp 0x6902e
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x101d0
jmp 0x69083
jmp 0x69080
jmp 0x69208
jmp 0x6910e
jmp 0x6911d
jmp 0x6912f
jmp 0x690ed
jmp 0x690fc
movq %rax, %rbx
jmp 0x6913c
jmp 0x69208
jmp 0x69208
jmp 0x69208
jmp 0x69208
jmp 0x69208
jmp 0x69208
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x2e9f6
jmp 0x6920b
jmp 0x69208
jmp 0x69208
jmp 0x69208
jmp 0x69208
jmp 0x69208
jmp 0x69208
jmp 0x69208
jmp 0x69208
jmp 0x69208
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x1f0b8
jmp 0x690d1
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x39102
jmp 0x6920b
jmp 0x69208
jmp 0x69208
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x101d0
jmp 0x690ff
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
jmp 0x69141
jmp 0x69208
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x39102
jmp 0x69120
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x101d0
jmp 0x69132
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x1f0b8
leaq 0x50(%rsp), %rdi
callq 0x101d0
jmp 0x6920b
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x39102
jmp 0x691a4
movq %rax, %rbx
pushq $0x10
popq %r14
leaq (%rsp,%r14), %rdi
addq $0xb8, %rdi
callq 0x39102
addq $-0x10, %r14
cmpq $-0x10, %r14
jne 0x69164
jmp 0x691a4
movq %rax, %rbx
jmp 0x69195
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x39102
leaq 0x38(%rsp), %rdi
callq 0x1f0b8
jmp 0x691a4
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x1f0b8
leaq 0x50(%rsp), %rdi
callq 0x3bdb2
jmp 0x6920b
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x3bbaa
jmp 0x691cf
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x101d0
jmp 0x691de
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x3bdb2
leaq 0x38(%rsp), %rdi
callq 0x1f0b8
jmp 0x6920b
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x39102
jmp 0x69218
movq %rax, %rbx
jmp 0x69218
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0x2e9f6
leaq 0xa8(%rsp), %rdi
callq 0x39102
movq %rbx, %rdi
callq 0x106f0
nop