// File: Nallantli[P]Rossa/main/Main.cpp
// Function: main
int main(int argc, char const *argv[])
{
	auto parsed = parseOptions(argc, argv);
	auto options = parsed.first;
	if (options["version"] == "true")
	{
		std::cout << _ROSSA_VERSION_LONG_ << "\n";
		return 0;
	}
	parser_t wrapper(parsed.second);

	printc("", RESET_TEXT);
	bool tree = options["tree"] == "true";

	if (options["file"] == "")
	{
		std::cout << _ROSSA_INTERPRETER_START_ << "\n";

		if (options["standard"] == "true")
		{
			try
			{
				wrapper.runCode(wrapper.compileCode(KEYWORD_LOAD " \"standard\";", std::filesystem::current_path() / "*"), false);
				std::cout << _STANDARD_LIBRARY_LOADED_ << "\n";
			}
			catch (const rossa_error_t &e)
			{
				std::cout << _STANDARD_LIBRARY_LOAD_FAIL_ << std::string(e.what()) << "\n";
			}
		}
		else
		{
			std::cout << _OPTION_NO_STD_ << "\n";
		}

		std::string code;
		while (true)
		{
			std::cout << "> ";
			std::getline(std::cin, code);
			try
			{
				auto comp = wrapper.compileCode(code, std::filesystem::current_path() / "*");
				auto value = wrapper.runCode(std::move(comp), tree);
				trace_t stack_trace;
				if (value.getValueType() == value_type_enum::ARRAY)
				{
					if (value.vectorSize() != 1)
					{
						int i = 0;
						for (auto &e : value.getVector(NULL, stack_trace))
						{
							printc("\t(" + std::to_string(i) + ")\t", CYAN_TEXT);
#ifdef DEBUG
							std::cout << e.toCodeString() << "\n";
#else
							std::cout << e.toString(NULL, stack_trace) << "\n";
#endif
							i++;
						}
					}
					else
					{
#ifdef DEBUG
						std::cout << "\t" << value.getVector(NULL, stack_trace)[0].toCodeString() << "\n";
#else
						std::cout << "\t" << value.getVector(NULL, stack_trace)[0].toString(NULL, stack_trace) << "\n";
#endif
					}
				}
			}
			catch (const rossa_error_t &e)
			{
				parser_t::printError(e);
			}
#ifdef DEBUG
	std::cout << "\t(SYMBOL COUNT: " << parser_t::symbol_count << ")\n";
	std::cout << "\t(OBJECT COUNT: " << parser_t::object_count << ")\n";
#endif
		}
	}
	else
	{
		std::ifstream file;
		file.open(options["file"]);
		if (!file.is_open())
		{
			std::cerr << _FAILURE_FILEPATH_ << options["file"] << "\n";
			return 1;
		}

		std::string content = "";
		std::string line;
		while (std::getline(file, line))
			content += line + "\n";

		try
		{
			if (options["standard"] == "true")
				content = (KEYWORD_LOAD " \"standard\";\n") + content;
			auto entry = wrapper.compileCode(content, std::filesystem::path(options["file"]));
			wrapper.runCode(entry, tree);
		}
		catch (const rossa_error_t &e)
		{
			parser_t::printError(e);
			return 1;
		}
	}

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x940, %rsp            # imm = 0x940
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq -0x58(%rbp), %rdi
movq %rdi, -0x7d0(%rbp)
callq 0x235b0
movq -0x7d0(%rbp), %rsi
leaq -0x88(%rbp), %rdi
callq 0x24600
jmp 0x21d55
leaq -0xb9(%rbp), %rdi
movq %rdi, -0x7d8(%rbp)
callq 0x119d0
movq -0x7d8(%rbp), %rdx
leaq 0x12e46e(%rip), %rsi    # 0x1501e4
leaq -0xb8(%rbp), %rdi
callq 0x24740
jmp 0x21d84
leaq -0x88(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x24660
movq %rax, -0x7e0(%rbp)
jmp 0x21da0
movq -0x7e0(%rbp), %rdi
leaq 0x12e2c1(%rip), %rsi    # 0x15006f
callq 0x24630
movb %al, -0x7e1(%rbp)
jmp 0x21dbb
leaq -0xb8(%rbp), %rdi
callq 0x11360
leaq -0xb9(%rbp), %rdi
callq 0x11600
movb -0x7e1(%rbp), %al
testb $0x1, %al
jne 0x21de2
jmp 0x21e9a
movq 0x1c31b7(%rip), %rdi    # 0x1e4fa0
leaq 0x12e284(%rip), %rsi    # 0x150074
callq 0x11560
movq %rax, -0x7f0(%rbp)
jmp 0x21dfe
movq -0x7f0(%rbp), %rdi
leaq 0x1306c9(%rip), %rsi    # 0x1524d5
callq 0x11560
jmp 0x21e13
movl $0x0, -0x4(%rbp)
movl $0x1, -0xc0(%rbp)
jmp 0x23207
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x23234
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x21e72
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x11360
leaq -0xb9(%rbp), %rdi
callq 0x11600
jmp 0x23228
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x23228
leaq -0x28(%rbp), %rsi
leaq -0x100(%rbp), %rdi
callq 0x2ad80
jmp 0x21eac
leaq -0x121(%rbp), %rdi
movq %rdi, -0x7f8(%rbp)
callq 0x119d0
movq -0x7f8(%rbp), %rdx
leaq 0x12e2c5(%rip), %rsi    # 0x150192
leaq -0x120(%rbp), %rdi
callq 0x24740
jmp 0x21edb
movl $0x0, -0x128(%rbp)
leaq -0x120(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x247f0
jmp 0x21efa
leaq -0x120(%rbp), %rdi
callq 0x11360
leaq -0x121(%rbp), %rdi
callq 0x11600
leaq -0x151(%rbp), %rdi
movq %rdi, -0x800(%rbp)
callq 0x119d0
movq -0x800(%rbp), %rdx
leaq 0x12e295(%rip), %rsi    # 0x1501c8
leaq -0x150(%rbp), %rdi
callq 0x24740
jmp 0x21f41
leaq -0x88(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x24660
movq %rax, -0x808(%rbp)
jmp 0x21f5d
movq -0x808(%rbp), %rdi
leaq 0x12e104(%rip), %rsi    # 0x15006f
callq 0x24630
movb %al, -0x809(%rbp)
jmp 0x21f78
leaq -0x150(%rbp), %rdi
callq 0x11360
leaq -0x151(%rbp), %rdi
callq 0x11600
movb -0x809(%rbp), %al
andb $0x1, %al
movb %al, -0x129(%rbp)
leaq -0x179(%rbp), %rdi
movq %rdi, -0x818(%rbp)
callq 0x119d0
movq -0x818(%rbp), %rdx
leaq 0x12e123(%rip), %rsi    # 0x1500e2
leaq -0x178(%rbp), %rdi
callq 0x24740
jmp 0x21fcd
leaq -0x88(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x24660
movq %rax, -0x820(%rbp)
jmp 0x21fe9
movq -0x820(%rbp), %rdi
leaq 0x12e19b(%rip), %rsi    # 0x150192
callq 0x24630
movb %al, -0x821(%rbp)
jmp 0x22004
leaq -0x178(%rbp), %rdi
callq 0x11360
leaq -0x179(%rbp), %rdi
callq 0x11600
movb -0x821(%rbp), %al
testb $0x1, %al
jne 0x2202b
jmp 0x22b40
movq 0x1c2f6e(%rip), %rdi    # 0x1e4fa0
leaq 0x12e0ae(%rip), %rsi    # 0x1500e7
callq 0x11560
movq %rax, -0x830(%rbp)
jmp 0x22047
movq -0x830(%rbp), %rdi
leaq 0x130480(%rip), %rsi    # 0x1524d5
callq 0x11560
jmp 0x2205c
leaq -0x1a1(%rbp), %rdi
movq %rdi, -0x838(%rbp)
callq 0x119d0
movq -0x838(%rbp), %rdx
leaq 0x12e158(%rip), %rsi    # 0x1501d5
leaq -0x1a0(%rbp), %rdi
callq 0x24740
jmp 0x2208b
leaq -0x88(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x24660
movq %rax, -0x840(%rbp)
jmp 0x220a7
movq -0x840(%rbp), %rdi
leaq 0x12dfba(%rip), %rsi    # 0x15006f
callq 0x24630
movb %al, -0x841(%rbp)
jmp 0x220c2
leaq -0x1a0(%rbp), %rdi
callq 0x11360
leaq -0x1a1(%rbp), %rdi
callq 0x11600
movb -0x841(%rbp), %al
testb $0x1, %al
jne 0x220e9
jmp 0x22568
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0x850(%rbp)
callq 0x119d0
movq -0x850(%rbp), %rdx
leaq 0x12dffd(%rip), %rsi    # 0x150107
leaq -0x1e8(%rbp), %rdi
callq 0x24740
jmp 0x22118
leaq -0x240(%rbp), %rdi
callq 0x11890
jmp 0x22126
leaq 0x12dede(%rip), %rsi    # 0x15000b
leaq -0x268(%rbp), %rdi
movl $0x2, %edx
callq 0x24a40
jmp 0x22140
leaq -0x218(%rbp), %rdi
leaq -0x240(%rbp), %rsi
leaq -0x268(%rbp), %rdx
callq 0x249c0
jmp 0x2215c
leaq -0x1c8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
leaq -0x1e8(%rbp), %rdx
leaq -0x218(%rbp), %rcx
callq 0x2b310
jmp 0x2217f
movb $0x0, -0x269(%rbp)
leaq -0x1b8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
leaq -0x1c8(%rbp), %rdx
leaq -0x269(%rbp), %rcx
callq 0x2b4b0
jmp 0x221a9
leaq -0x1b8(%rbp), %rdi
callq 0x86dc0
leaq -0x1c8(%rbp), %rdi
callq 0x24b20
leaq -0x218(%rbp), %rdi
callq 0x24b40
leaq -0x268(%rbp), %rdi
callq 0x24b40
leaq -0x240(%rbp), %rdi
callq 0x24b40
leaq -0x1e8(%rbp), %rdi
callq 0x11360
leaq -0x1e9(%rbp), %rdi
callq 0x11600
movq 0x1c2d9c(%rip), %rdi    # 0x1e4fa0
leaq 0x12df0d(%rip), %rsi    # 0x150118
callq 0x11560
movq %rax, -0x858(%rbp)
jmp 0x22219
movq -0x858(%rbp), %rdi
leaq 0x1302ae(%rip), %rsi    # 0x1524d5
callq 0x11560
jmp 0x2222e
jmp 0x22505
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x22265
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x11360
leaq -0x121(%rbp), %rdi
callq 0x11600
jmp 0x231f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x222a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x11360
leaq -0x151(%rbp), %rdi
callq 0x11600
jmp 0x231f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x222eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x11360
leaq -0x179(%rbp), %rdi
callq 0x11600
jmp 0x231f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x231f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x22345
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x11360
leaq -0x1a1(%rbp), %rdi
callq 0x11600
jmp 0x231f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x2240b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x223ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x223f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x223e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x223db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x24b20
leaq -0x218(%rbp), %rdi
callq 0x24b40
leaq -0x268(%rbp), %rdi
callq 0x24b40
leaq -0x240(%rbp), %rdi
callq 0x24b40
leaq -0x1e8(%rbp), %rdi
callq 0x11360
leaq -0x1e9(%rbp), %rdi
callq 0x11600
jmp 0x2242b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
movl -0x94(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x231f9
movq -0x90(%rbp), %rdi
callq 0x11220
movq %rax, -0x278(%rbp)
movq 0x1c2b48(%rip), %rdi    # 0x1e4fa0
leaq 0x12dcd1(%rip), %rsi    # 0x150130
callq 0x11560
movq %rax, -0x860(%rbp)
jmp 0x2246d
movq -0x278(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, -0x870(%rbp)
leaq -0x299(%rbp), %rdi
movq %rdi, -0x868(%rbp)
callq 0x119d0
movq -0x870(%rbp), %rsi
movq -0x868(%rbp), %rdx
leaq -0x298(%rbp), %rdi
callq 0x24740
jmp 0x224b3
movq -0x860(%rbp), %rdi
leaq -0x298(%rbp), %rsi
callq 0x114e0
movq %rax, -0x878(%rbp)
jmp 0x224cf
movq -0x878(%rbp), %rdi
leaq 0x12fff8(%rip), %rsi    # 0x1524d5
callq 0x11560
jmp 0x224e4
leaq -0x298(%rbp), %rdi
callq 0x11360
leaq -0x299(%rbp), %rdi
callq 0x11600
callq 0x11910
jmp 0x22503
jmp 0x22505
jmp 0x2259b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x2255c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x22550
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x11360
leaq -0x299(%rbp), %rdi
callq 0x11600
callq 0x11910
jmp 0x22563
jmp 0x231f9
movq 0x1c2a31(%rip), %rdi    # 0x1e4fa0
leaq 0x12dbdc(%rip), %rsi    # 0x150152
callq 0x11560
movq %rax, -0x880(%rbp)
jmp 0x22584
movq -0x880(%rbp), %rdi
leaq 0x12ff43(%rip), %rsi    # 0x1524d5
callq 0x11560
jmp 0x22599
jmp 0x2259b
leaq -0x2c0(%rbp), %rdi
callq 0x117c0
jmp 0x225a9
movq 0x1c29f0(%rip), %rdi    # 0x1e4fa0
leaq 0x12dbd3(%rip), %rsi    # 0x15018a
callq 0x11560
jmp 0x225be
movq 0x1c2a13(%rip), %rdi    # 0x1e4fd8
leaq -0x2c0(%rbp), %rsi
callq 0x110d0
jmp 0x225d3
leaq -0x320(%rbp), %rdi
callq 0x11890
jmp 0x225e1
leaq 0x12da23(%rip), %rsi    # 0x15000b
leaq -0x348(%rbp), %rdi
movl $0x2, %edx
callq 0x24a40
jmp 0x225fb
leaq -0x2f8(%rbp), %rdi
leaq -0x320(%rbp), %rsi
leaq -0x348(%rbp), %rdx
callq 0x249c0
jmp 0x22617
leaq -0x2d0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
leaq -0x2c0(%rbp), %rdx
leaq -0x2f8(%rbp), %rcx
callq 0x2b310
jmp 0x2263a
leaq -0x2f8(%rbp), %rdi
callq 0x24b40
leaq -0x348(%rbp), %rdi
callq 0x24b40
leaq -0x320(%rbp), %rdi
callq 0x24b40
leaq -0x358(%rbp), %rdi
leaq -0x100(%rbp), %rsi
leaq -0x2d0(%rbp), %rdx
leaq -0x129(%rbp), %rcx
callq 0x2b4b0
jmp 0x22681
leaq -0x370(%rbp), %rdi
callq 0x24b80
leaq -0x358(%rbp), %rdi
callq 0x883e0
movl %eax, -0x884(%rbp)
jmp 0x226a1
movl -0x884(%rbp), %eax
cmpl $-0x5, %eax
jne 0x22a8c
leaq -0x358(%rbp), %rdi
callq 0x88f70
movq %rax, -0x890(%rbp)
jmp 0x226c5
movq -0x890(%rbp), %rax
cmpq $0x1, %rax
je 0x229b9
movl $0x0, -0x374(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x358(%rbp), %rdi
leaq -0x370(%rbp), %rdx
callq 0x87fe0
movq %rax, -0x898(%rbp)
jmp 0x22700
movq -0x898(%rbp), %rax
movq %rax, -0x380(%rbp)
movq -0x380(%rbp), %rdi
callq 0x24ba0
movq %rax, -0x388(%rbp)
movq -0x380(%rbp), %rdi
callq 0x24bd0
movq %rax, -0x390(%rbp)
leaq -0x388(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x24c00
testb $0x1, %al
jne 0x22750
jmp 0x229b4
leaq -0x388(%rbp), %rdi
callq 0x24c40
movq %rax, -0x398(%rbp)
movl -0x374(%rbp), %esi
leaq -0x3f8(%rbp), %rdi
callq 0x24d00
jmp 0x22777
leaq 0x12da0f(%rip), %rsi    # 0x15018d
leaq -0x3d8(%rbp), %rdi
leaq -0x3f8(%rbp), %rdx
callq 0x24cb0
jmp 0x22793
leaq 0x12d9f6(%rip), %rdx    # 0x150190
leaq -0x3b8(%rbp), %rdi
leaq -0x3d8(%rbp), %rsi
callq 0x24c60
jmp 0x227af
movl $0x24, -0x3fc(%rbp)
leaq -0x3b8(%rbp), %rdi
leaq -0x3fc(%rbp), %rsi
callq 0x247f0
jmp 0x227ce
leaq -0x3b8(%rbp), %rdi
callq 0x11360
leaq -0x3d8(%rbp), %rdi
callq 0x11360
leaq -0x3f8(%rbp), %rdi
callq 0x11360
movq -0x398(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
leaq -0x420(%rbp), %rdi
leaq -0x370(%rbp), %rcx
callq 0x88fe0
jmp 0x22812
movq 0x1c2787(%rip), %rdi    # 0x1e4fa0
leaq -0x420(%rbp), %rsi
callq 0x114e0
movq %rax, -0x8a0(%rbp)
jmp 0x2282e
movq -0x8a0(%rbp), %rdi
leaq 0x12fc99(%rip), %rsi    # 0x1524d5
callq 0x11560
jmp 0x22843
leaq -0x420(%rbp), %rdi
callq 0x11360
movl -0x374(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x374(%rbp)
leaq -0x388(%rbp), %rdi
callq 0x24e20
jmp 0x22734
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x22b2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x22ad6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x228ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x228e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x24b40
leaq -0x348(%rbp), %rdi
callq 0x24b40
leaq -0x320(%rbp), %rdi
callq 0x24b40
jmp 0x22ad6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x22aca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x22ab2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x22980
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x22974
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x3b8(%rbp), %rdi
callq 0x11360
leaq -0x3d8(%rbp), %rdi
callq 0x11360
leaq -0x3f8(%rbp), %rdi
callq 0x11360
jmp 0x22ab2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x420(%rbp), %rdi
callq 0x11360
jmp 0x22ab2
jmp 0x22a8a
movq 0x1c25e0(%rip), %rdi    # 0x1e4fa0
leaq 0x12d7ca(%rip), %rsi    # 0x150191
callq 0x11560
movq %rax, -0x8a8(%rbp)
jmp 0x229d5
xorl %eax, %eax
movl %eax, %esi
leaq -0x358(%rbp), %rdi
leaq -0x370(%rbp), %rdx
callq 0x87fe0
movq %rax, -0x8b0(%rbp)
jmp 0x229f5
movq -0x8b0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0x8b8(%rbp)
callq 0x24e40
movq -0x8b8(%rbp), %rdx
movq %rax, %rsi
leaq -0x440(%rbp), %rdi
leaq -0x370(%rbp), %rcx
callq 0x88fe0
jmp 0x22a2b
movq -0x8a8(%rbp), %rdi
leaq -0x440(%rbp), %rsi
callq 0x114e0
movq %rax, -0x8c0(%rbp)
jmp 0x22a47
movq -0x8c0(%rbp), %rdi
leaq 0x12fa80(%rip), %rsi    # 0x1524d5
callq 0x11560
jmp 0x22a5c
leaq -0x440(%rbp), %rdi
callq 0x11360
jmp 0x22a8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x440(%rbp), %rdi
callq 0x11360
jmp 0x22ab2
jmp 0x22a8c
leaq -0x370(%rbp), %rdi
callq 0x24e60
leaq -0x358(%rbp), %rdi
callq 0x86dc0
leaq -0x2d0(%rbp), %rdi
callq 0x24b20
jmp 0x22b0f
leaq -0x370(%rbp), %rdi
callq 0x24e60
leaq -0x358(%rbp), %rdi
callq 0x86dc0
leaq -0x2d0(%rbp), %rdi
callq 0x24b20
movl -0x94(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x22b2f
movq -0x90(%rbp), %rdi
callq 0x11220
movq %rax, -0x448(%rbp)
movq -0x448(%rbp), %rdi
callq 0x2b8c0
jmp 0x22b06
callq 0x11910
jmp 0x22b0d
jmp 0x22b0f
jmp 0x225a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
callq 0x11910
jmp 0x22b2d
jmp 0x22b2f
leaq -0x2c0(%rbp), %rdi
callq 0x11360
jmp 0x231f9
leaq -0x650(%rbp), %rdi
callq 0x11690
jmp 0x22b4e
leaq -0x671(%rbp), %rdi
movq %rdi, -0x8c8(%rbp)
callq 0x119d0
movq -0x8c8(%rbp), %rdx
leaq 0x12d573(%rip), %rsi    # 0x1500e2
leaq -0x670(%rbp), %rdi
callq 0x24740
jmp 0x22b7d
leaq -0x88(%rbp), %rdi
leaq -0x670(%rbp), %rsi
callq 0x24660
movq %rax, -0x8d0(%rbp)
jmp 0x22b99
movq -0x8d0(%rbp), %rsi
leaq -0x650(%rbp), %rdi
movl $0x8, %edx
callq 0x114b0
jmp 0x22bb3
leaq -0x670(%rbp), %rdi
callq 0x11360
leaq -0x671(%rbp), %rdi
callq 0x11600
leaq -0x650(%rbp), %rdi
callq 0x118d0
movb %al, -0x8d1(%rbp)
jmp 0x22bdf
movb -0x8d1(%rbp), %al
testb $0x1, %al
jne 0x22d52
jmp 0x22bef
movq 0x1c23fa(%rip), %rdi    # 0x1e4ff0
leaq 0x12d596(%rip), %rsi    # 0x150193
callq 0x11560
movq %rax, -0x8e0(%rbp)
jmp 0x22c0b
leaq -0x699(%rbp), %rdi
movq %rdi, -0x8e8(%rbp)
callq 0x119d0
movq -0x8e8(%rbp), %rdx
leaq 0x12d4b6(%rip), %rsi    # 0x1500e2
leaq -0x698(%rbp), %rdi
callq 0x24740
jmp 0x22c3a
leaq -0x88(%rbp), %rdi
leaq -0x698(%rbp), %rsi
callq 0x24660
movq %rax, -0x8f0(%rbp)
jmp 0x22c56
movq -0x8f0(%rbp), %rsi
movq -0x8e0(%rbp), %rdi
callq 0x114e0
movq %rax, -0x8f8(%rbp)
jmp 0x22c72
movq -0x8f8(%rbp), %rdi
leaq 0x12f855(%rip), %rsi    # 0x1524d5
callq 0x11560
jmp 0x22c87
leaq -0x698(%rbp), %rdi
callq 0x11360
leaq -0x699(%rbp), %rdi
callq 0x11600
movl $0x1, -0x4(%rbp)
movl $0x1, -0xc0(%rbp)
jmp 0x2319a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x22ce7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x670(%rbp), %rdi
callq 0x11360
leaq -0x671(%rbp), %rdi
callq 0x11600
jmp 0x231cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x231cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x22d41
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x698(%rbp), %rdi
callq 0x11360
leaq -0x699(%rbp), %rdi
callq 0x11600
jmp 0x231cc
leaq -0x6c1(%rbp), %rdi
movq %rdi, -0x900(%rbp)
callq 0x119d0
movq -0x900(%rbp), %rdx
leaq 0x12d41f(%rip), %rsi    # 0x150192
leaq -0x6c0(%rbp), %rdi
callq 0x24740
jmp 0x22d81
leaq -0x6c1(%rbp), %rdi
callq 0x11600
leaq -0x6e8(%rbp), %rdi
callq 0x117c0
leaq -0x650(%rbp), %rdi
leaq -0x6e8(%rbp), %rsi
callq 0x110d0
movq %rax, -0x908(%rbp)
jmp 0x22db5
movq -0x908(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x11730
movb %al, -0x909(%rbp)
jmp 0x22dd3
movb -0x909(%rbp), %al
testb $0x1, %al
jne 0x22de2
jmp 0x22e81
leaq 0x12f6ec(%rip), %rdx    # 0x1524d5
leaq -0x708(%rbp), %rdi
leaq -0x6e8(%rbp), %rsi
callq 0x24ec0
jmp 0x22dfe
leaq -0x6c0(%rbp), %rdi
leaq -0x708(%rbp), %rsi
callq 0x11750
jmp 0x22e13
leaq -0x708(%rbp), %rdi
callq 0x11360
jmp 0x22d99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x6c1(%rbp), %rdi
callq 0x11600
jmp 0x231cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x231b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x708(%rbp), %rdi
callq 0x11360
jmp 0x231b4
leaq -0x729(%rbp), %rdi
movq %rdi, -0x918(%rbp)
callq 0x119d0
movq -0x918(%rbp), %rdx
leaq 0x12d333(%rip), %rsi    # 0x1501d5
leaq -0x728(%rbp), %rdi
callq 0x24740
jmp 0x22eb0
leaq -0x88(%rbp), %rdi
leaq -0x728(%rbp), %rsi
callq 0x24660
movq %rax, -0x920(%rbp)
jmp 0x22ecc
movq -0x920(%rbp), %rdi
leaq 0x12d195(%rip), %rsi    # 0x15006f
callq 0x24630
movb %al, -0x921(%rbp)
jmp 0x22ee7
leaq -0x728(%rbp), %rdi
callq 0x11360
leaq -0x729(%rbp), %rdi
callq 0x11600
movb -0x921(%rbp), %al
testb $0x1, %al
jne 0x22f0e
jmp 0x22fa5
leaq 0x12d299(%rip), %rsi    # 0x1501ae
leaq -0x750(%rbp), %rdi
leaq -0x6c0(%rbp), %rdx
callq 0x24f40
jmp 0x22f2a
leaq -0x6c0(%rbp), %rdi
leaq -0x750(%rbp), %rsi
callq 0x11700
leaq -0x750(%rbp), %rdi
callq 0x11360
jmp 0x22fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x22f7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x728(%rbp), %rdi
callq 0x11360
leaq -0x729(%rbp), %rdi
callq 0x11600
jmp 0x2310f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x2310f
leaq -0x7a9(%rbp), %rdi
movq %rdi, -0x930(%rbp)
callq 0x119d0
movq -0x930(%rbp), %rdx
leaq 0x12d11c(%rip), %rsi    # 0x1500e2
leaq -0x7a8(%rbp), %rdi
callq 0x24740
jmp 0x22fd4
leaq -0x88(%rbp), %rdi
leaq -0x7a8(%rbp), %rsi
callq 0x24660
movq %rax, -0x938(%rbp)
jmp 0x22ff0
movq -0x938(%rbp), %rsi
leaq -0x788(%rbp), %rdi
movl $0x2, %edx
callq 0x25050
jmp 0x2300a
leaq -0x760(%rbp), %rdi
leaq -0x100(%rbp), %rsi
leaq -0x6c0(%rbp), %rdx
leaq -0x788(%rbp), %rcx
callq 0x2b310
jmp 0x2302d
leaq -0x788(%rbp), %rdi
callq 0x24b40
leaq -0x7a8(%rbp), %rdi
callq 0x11360
leaq -0x7a9(%rbp), %rdi
callq 0x11600
leaq -0x7c0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
leaq -0x760(%rbp), %rdx
leaq -0x129(%rbp), %rcx
callq 0x2b4b0
jmp 0x23074
leaq -0x7c0(%rbp), %rdi
callq 0x86dc0
leaq -0x760(%rbp), %rdi
callq 0x24b20
jmp 0x23178
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x230e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x230d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x788(%rbp), %rdi
callq 0x24b40
leaq -0x7a8(%rbp), %rdi
callq 0x11360
leaq -0x7a9(%rbp), %rdi
callq 0x11600
jmp 0x2310f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x760(%rbp), %rdi
callq 0x24b20
movl -0x94(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x231b4
movq -0x90(%rbp), %rdi
callq 0x11220
movq %rax, -0x7c8(%rbp)
movq -0x7c8(%rbp), %rdi
callq 0x2b8c0
jmp 0x23143
movl $0x1, -0x4(%rbp)
movl $0x1, -0xc0(%rbp)
callq 0x11910
jmp 0x23174
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
callq 0x11910
jmp 0x23176
jmp 0x23182
jmp 0x231b4
movl $0x0, -0xc0(%rbp)
leaq -0x6e8(%rbp), %rdi
callq 0x11360
leaq -0x6c0(%rbp), %rdi
callq 0x11360
leaq -0x650(%rbp), %rdi
callq 0x11140
movl -0xc0(%rbp), %eax
testl %eax, %eax
jne 0x231eb
jmp 0x231b2
jmp 0x231da
leaq -0x6e8(%rbp), %rdi
callq 0x11360
leaq -0x6c0(%rbp), %rdi
callq 0x11360
leaq -0x650(%rbp), %rdi
callq 0x11140
jmp 0x231f9
movl $0x0, -0x4(%rbp)
movl $0x1, -0xc0(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x2ca00
jmp 0x23207
leaq -0x100(%rbp), %rdi
callq 0x2ca00
jmp 0x23228
leaq -0x88(%rbp), %rdi
callq 0x25130
leaq -0x58(%rbp), %rdi
callq 0x25150
movl -0x4(%rbp), %eax
addq $0x940, %rsp            # imm = 0x940
popq %rbp
retq
leaq -0x88(%rbp), %rdi
callq 0x25130
leaq -0x58(%rbp), %rdi
callq 0x25150
movq -0x90(%rbp), %rdi
callq 0x119c0
movq %rax, %rdi
callq 0x24b70
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)