// File: /workspace/github_cpp_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x3a8, %rsp            # imm = 0x3A8
movq %rsi, %rdx
movl %edi, %esi
leaq 0x360(%rsp), %rbx
movq %rbx, %rdi
callq 0x1c967
leaq 0xc8(%rsp), %rdi
movq %rbx, %rsi
callq 0x1e3a6
leaq 0x108(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x679ab(%rip), %rsi     # 0x831c0
leaq 0x679ab(%rip), %rdx     # 0x831c7
leaq 0xf8(%rsp), %rdi
callq 0x1e698
leaq 0xc8(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0x1d07c
leaq 0x67806(%rip), %rsi     # 0x8304b
movq %rax, %rdi
callq 0x10110
movl %eax, %ebx
movq 0xf8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1b86c
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x103d0
testl %ebx, %ebx
je 0x1bb00
leaq 0x390(%rsp), %rsi
leaq 0x320(%rsp), %rdi
callq 0x1ecb4
leaq 0xf8(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x678d3(%rip), %rdx     # 0x8316e
movq %rdx, %rsi
callq 0x1e698
leaq 0x10(%rsp), %rsi
movl $0x0, (%rsi)
leaq 0xf8(%rsp), %rdi
callq 0x1d135
movq 0xf8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1b8d8
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0xf8(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x678ba(%rip), %rsi     # 0x831a4
leaq 0x678b7(%rip), %rdx     # 0x831a8
callq 0x1e698
leaq 0xc8(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0x1d07c
leaq 0x67739(%rip), %rsi     # 0x8304b
movq %rax, %rdi
callq 0x10110
movl %eax, %ebx
movq 0xf8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1b939
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x103d0
testl %ebx, %ebx
sete 0xf(%rsp)
leaq 0xf8(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x6776c(%rip), %rsi     # 0x830be
leaq 0x67769(%rip), %rdx     # 0x830c2
callq 0x1e698
leaq 0xc8(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0x1d07c
leaq 0x677f4(%rip), %rsi     # 0x8316e
movq %rax, %rdi
callq 0x10110
movl %eax, %ebx
movq 0xf8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1b9a1
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x103d0
testl %ebx, %ebx
je 0x1bdbe
leaq 0xf8(%rsp), %rdi
callq 0x10480
leaq 0x20(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x676f8(%rip), %rsi     # 0x830be
leaq 0x676f5(%rip), %rdx     # 0x830c2
leaq 0x10(%rsp), %rdi
callq 0x1e698
leaq 0xc8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1d07c
leaq 0xf8(%rsp), %rbx
movq %rbx, %rdi
movq %rax, %rsi
movl $0x8, %edx
callq 0x10350
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1ba18
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0x170(%rsp), %rdi
callq 0x100b0
testb %al, %al
je 0x1bb37
leaq 0x48(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x67731(%rip), %rdx     # 0x8316e
leaq 0x38(%rsp), %rdi
movq %rdx, %rsi
callq 0x1e698
leaq 0x70(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x60(%rsp), %r14
leaq 0x10(%rsp), %r15
leaq 0x6908e(%rip), %r12     # 0x84afd
leaq 0x38(%rsp), %r13
movq 0xf8(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x103a0
movsbl %al, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x10720
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x1bbc4
movq %rbp, 0x10(%rsp)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x1ded4
movq %r15, %rdi
movq %r12, %rsi
callq 0x10770
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %r13, %rdi
callq 0x10120
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1ba74
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x1ba74
movq 0x99491(%rip), %rdi     # 0xb4f98
leaq 0x67542(%rip), %rsi     # 0x83050
movl $0x6d, %edx
callq 0x10490
xorl %ebx, %ebx
movq 0x99477(%rip), %rdi     # 0xb4f98
leaq 0x68fd5(%rip), %rsi     # 0x84afd
movl $0x1, %edx
callq 0x10490
jmp 0x1bd83
movq 0x994aa(%rip), %rdi     # 0xb4fe8
leaq 0x6762a(%rip), %rsi     # 0x8316f
movl $0x1a, %edx
callq 0x10490
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x67560(%rip), %rsi     # 0x830be
leaq 0x6755d(%rip), %rdx     # 0x830c2
callq 0x1e698
leaq 0xc8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1d07c
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x9945e(%rip), %rdi     # 0xb4fe8
callq 0x10490
leaq 0x68f67(%rip), %rsi     # 0x84afd
movl $0x1, %edx
movq %rax, %rdi
callq 0x10490
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1bbba
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x103d0
movl $0x1, %ebx
jmp 0x1bd69
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x675de(%rip), %rsi     # 0x831b1
leaq 0x675df(%rip), %rdx     # 0x831b9
callq 0x1e698
leaq 0xc8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1d07c
leaq 0x67453(%rip), %rsi     # 0x8304b
movq %rax, %rdi
callq 0x10110
movl %eax, %ebx
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1bc19
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x103d0
testl %ebx, %ebx
jne 0x1bc5a
leaq 0x67566(%rip), %rsi     # 0x8318a
leaq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x1d67c
leaq 0x38(%rsp), %rdi
leaq 0x10(%rsp), %rbx
movq %rbx, %rsi
callq 0x104f0
movq (%rbx), %rdi
cmpq %rbp, %rdi
je 0x1bc5a
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0x90(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x67451(%rip), %rsi     # 0x830be
leaq 0x6744e(%rip), %rdx     # 0x830c2
leaq 0x80(%rsp), %rdi
callq 0x1e698
leaq 0xc8(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x1d07c
leaq 0x10(%rsp), %rdi
movq %rax, %rsi
movl $0x2, %edx
callq 0x1d704
leaq 0xa0(%rsp), %rdi
leaq 0x320(%rsp), %rsi
leaq 0x38(%rsp), %rdx
leaq 0x10(%rsp), %rcx
callq 0x1f124
leaq 0x10(%rsp), %rdi
callq 0x1d5ee
movq 0x80(%rsp), %rdi
cmpq %r14, %rdi
je 0x1bcee
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0x300(%rsp), %rdi
leaq 0x320(%rsp), %rsi
leaq 0xa0(%rsp), %rdx
leaq 0xf(%rsp), %rcx
callq 0x1f282
leaq 0x300(%rsp), %rdi
callq 0x3fe06
movq 0xa8(%rsp), %rdi
testq %rdi, %rdi
je 0x1bd2f
callq 0x1e5bc
xorl %ebx, %ebx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x1bd4d
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x1bd69
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0xf8(%rsp), %rdi
callq 0x100d0
leaq 0x320(%rsp), %rdi
callq 0x207c2
leaq 0xc8(%rsp), %rdi
callq 0x1dbbe
leaq 0x390(%rsp), %rdi
callq 0x1db60
leaq 0x360(%rsp), %rdi
callq 0x1dbbe
movl %ebx, %eax
addq $0x3a8, %rsp            # imm = 0x3A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x991d3(%rip), %rdi     # 0xb4f98
leaq 0x672f7(%rip), %rsi     # 0x830c3
movl $0x1f, %edx
callq 0x10490
movq 0x991bb(%rip), %rdi     # 0xb4f98
leaq 0x68d19(%rip), %rsi     # 0x84afd
movl $0x1, %edx
callq 0x10490
leaq 0xf8(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x673b1(%rip), %rsi     # 0x831b1
leaq 0x673b2(%rip), %rdx     # 0x831b9
callq 0x1e698
leaq 0xc8(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0x1d07c
leaq 0x67223(%rip), %rsi     # 0x8304b
movq %rax, %rdi
callq 0x10110
movl %eax, %ebx
movq 0xf8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1be4f
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x103d0
testl %ebx, %ebx
jne 0x1bf82
leaq 0x70(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x6727c(%rip), %rsi     # 0x830e3
leaq 0x67285(%rip), %rdx     # 0x830f3
leaq 0x60(%rsp), %rdi
callq 0x1e698
leaq 0x10(%rsp), %rdi
callq 0x10610
leaq 0x69d16(%rip), %rsi     # 0x85b9f
leaq 0x38(%rsp), %rdi
movl $0x2, %edx
callq 0x1d566
leaq 0xf8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x1d52e
leaq 0x80(%rsp), %rdi
leaq 0x320(%rsp), %rsi
leaq 0x60(%rsp), %rdx
leaq 0xf8(%rsp), %rcx
callq 0x1f124
leaq 0xa0(%rsp), %rcx
movb $0x0, (%rcx)
leaq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rsi
leaq 0x80(%rsp), %rdx
callq 0x1f282
leaq 0x310(%rsp), %rdi
callq 0x3fe06
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0x1bf18
callq 0x1e5bc
leaq 0xf8(%rsp), %rdi
callq 0x1d5ee
leaq 0x38(%rsp), %rdi
callq 0x1d5ee
leaq 0x10(%rsp), %rdi
callq 0x1d5ee
movq 0x60(%rsp), %rdi
cmpq %r14, %rdi
je 0x1bf50
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x99041(%rip), %rdi     # 0xb4f98
leaq 0x67196(%rip), %rsi     # 0x830f4
movl $0x17, %edx
callq 0x10490
movq 0x99029(%rip), %rdi     # 0xb4f98
leaq 0x68b87(%rip), %rsi     # 0x84afd
movl $0x1, %edx
callq 0x10490
jmp 0x1bfb2
movq 0x9900f(%rip), %rdi     # 0xb4f98
leaq 0x6719e(%rip), %rsi     # 0x8312e
movl $0x37, %edx
callq 0x10490
movq 0x98ff7(%rip), %rdi     # 0xb4f98
leaq 0x68b55(%rip), %rsi     # 0x84afd
movl $0x1, %edx
callq 0x10490
leaq 0x70(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x98ffb(%rip), %rbx     # 0xb4fc8
leaq 0x38(%rsp), %r14
leaq 0xf8(%rsp), %r15
movl $0x2, %edx
movq 0x98fb2(%rip), %rdi     # 0xb4f98
leaq 0x67179(%rip), %rsi     # 0x83166
callq 0x10490
leaq 0xa0(%rsp), %r12
leaq 0x320(%rsp), %r13
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x103a0
movsbl %al, %edx
movq %rbx, %rdi
leaq 0x60(%rsp), %rsi
callq 0x10720
leaq 0x10(%rsp), %rdi
callq 0x10610
movq %r14, %rdi
leaq 0x69b65(%rip), %rsi     # 0x85b9f
movl $0x2, %edx
callq 0x1d566
movq %r15, %rdi
leaq 0x10(%rsp), %rsi
movq %r14, %rdx
callq 0x1d52e
movq %r12, %rdi
movq %r13, %rsi
leaq 0x60(%rsp), %rdx
movq %r15, %rcx
callq 0x1f124
movq %r15, %rdi
callq 0x1d5ee
movq %r14, %rdi
callq 0x1d5ee
leaq 0x10(%rsp), %rdi
callq 0x1d5ee
leaq 0xb8(%rsp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
leaq 0xf(%rsp), %rcx
callq 0x1f282
xorps %xmm0, %xmm0
movaps %xmm0, 0x80(%rsp)
movq $0x0, 0x90(%rsp)
movq %rbx, %rdi
callq 0x40b5a
cmpl $-0x5, %eax
jne 0x1c3c7
leaq 0xb8(%rsp), %rdi
callq 0x4130e
cmpq $0x1, %rax
jne 0x1c173
movl $0x1, %edx
movq 0x98eb1(%rip), %rdi     # 0xb4f98
leaq 0x6707f(%rip), %rsi     # 0x8316d
callq 0x10490
leaq 0xb8(%rsp), %rdi
xorl %esi, %esi
leaq 0x80(%rsp), %rbx
movq %rbx, %rdx
callq 0x40848
movq (%rax), %rsi
movq %r15, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x41338
movq 0xf8(%rsp), %rsi
movq 0x100(%rsp), %rdx
movq 0x98e64(%rip), %rdi     # 0xb4f98
callq 0x10490
movl $0x1, %edx
movq %rax, %rdi
leaq 0x689b5(%rip), %rsi     # 0x84afd
callq 0x10490
movq 0xf8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1c3c7
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x1c3c7
leaq 0xb8(%rsp), %rdi
xorl %esi, %esi
leaq 0x80(%rsp), %rdx
callq 0x40848
movq (%rax), %r13
movq 0x8(%rax), %rbx
cmpq %rbx, %r13
je 0x1c3c7
xorl %r14d, %r14d
movl $0x1, %r12d
cmpl $0xa, %r14d
jb 0x1c1f0
movl $0x4, %r12d
movl %r14d, %eax
cmpl $0x63, %eax
jbe 0x1c1e7
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x1c1ed
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x1c1f0
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r12d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x1c1b2
addl $-0x3, %r12d
jmp 0x1c1f0
addl $-0x2, %r12d
jmp 0x1c1f0
decl %r12d
movl %r12d, %esi
leaq 0x48(%rsp), %rax
movq %rax, 0x38(%rsp)
leaq 0x38(%rsp), %r15
movq %r15, %rdi
movl $0x2d, %edx
callq 0x104c0
movq 0x38(%rsp), %rdi
movl %r12d, %esi
movl %r14d, %edx
callq 0x1e62b
movl $0x2, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x66f36(%rip), %rcx     # 0x83169
callq 0x10460
leaq 0x20(%rsp), %rsi
movq %rsi, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq 0xf8(%rsp), %r15
je 0x1c268
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x1c26e
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x10(%rsp), %rdi
leaq 0x66eda(%rip), %rsi     # 0x8316c
callq 0x10770
movq %rbp, 0xf8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1c2c3
movq %rdx, 0xf8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x108(%rsp)
jmp 0x1c2ca
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
movq 0x8(%rax), %rdx
movq %rdx, 0x100(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x24, 0xb4(%rsp)
movq %r15, %rdi
leaq 0xb4(%rsp), %rsi
callq 0x1d135
movq 0xf8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1c31d
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x1c339
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x1c355
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x103d0
movq %r15, %rdi
movq %r13, %rsi
xorl %edx, %edx
leaq 0x80(%rsp), %rcx
callq 0x41338
movq 0xf8(%rsp), %rsi
movq 0x100(%rsp), %rdx
movq 0x98c17(%rip), %rdi     # 0xb4f98
callq 0x10490
movl $0x1, %edx
movq %rax, %rdi
leaq 0x68768(%rip), %rsi     # 0x84afd
callq 0x10490
movq 0xf8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1c3b7
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x103d0
incl %r14d
addq $0x10, %r13
cmpq %rbx, %r13
jne 0x1c19d
leaq 0x80(%rsp), %rdi
callq 0x1d632
leaq 0xb8(%rsp), %rdi
callq 0x3fe06
movq 0xa8(%rsp), %rdi
testq %rdi, %rdi
je 0x1c3f3
callq 0x1e5bc
movq 0x98bce(%rip), %rbx     # 0xb4fc8
leaq 0x38(%rsp), %r14
jmp 0x1bfda
jmp 0x1c4c9
jmp 0x1c4d1
jmp 0x1c4c9
movq %rdx, %r14
movq %rax, %r12
jmp 0x1c50e
movq %rdx, %r14
movq %rax, %r12
movq %r15, %rdi
callq 0x1d5ee
jmp 0x1c434
movq %rdx, %r14
movq %rax, %r12
leaq 0x38(%rsp), %rdi
callq 0x1d5ee
jmp 0x1c446
movq %rdx, %r14
movq %rax, %r12
leaq 0x10(%rsp), %rdi
callq 0x1d5ee
jmp 0x1c520
movq %rdx, %r14
movq %rax, %r12
jmp 0x1c520
jmp 0x1c4c9
jmp 0x1c4c9
movq %rdx, %r14
movq %rax, %r12
movq 0xf8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1c48f
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x1c48f
movq %rdx, %r14
movq %rax, %r12
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x1c4b3
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x1c4b3
movq %rdx, %r14
movq %rax, %r12
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x1c4f4
movq 0x48(%rsp), %rsi
jmp 0x1c4ec
movq %rdx, %r14
movq %rax, %r12
jmp 0x1c4f4
movq %rdx, %r14
movq %rax, %r12
movq 0xf8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1c4f4
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0x80(%rsp), %rdi
callq 0x1d632
leaq 0xb8(%rsp), %rdi
callq 0x3fe06
movq 0xa8(%rsp), %rdi
testq %rdi, %rdi
je 0x1c520
callq 0x1e5bc
cmpl $0x1, %r14d
jne 0x1c5e1
movq %r12, %rdi
callq 0x101a0
movq %rax, %rdi
callq 0x1f518
callq 0x10690
movq 0x98a82(%rip), %rbx     # 0xb4fc8
leaq 0x38(%rsp), %r14
leaq 0xf8(%rsp), %r15
jmp 0x1bfda
jmp 0x1c5de
movq %rax, %r12
callq 0x10690
jmp 0x1c5e1
jmp 0x1c5fe
movq %rdx, %rbx
movq %rax, %r12
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0x1c58c
callq 0x1e5bc
jmp 0x1c58c
movq %rdx, %rbx
movq %rax, %r12
leaq 0xf8(%rsp), %rdi
callq 0x1d5ee
jmp 0x1c5a1
movq %rdx, %rbx
movq %rax, %r12
leaq 0x38(%rsp), %rdi
callq 0x1d5ee
jmp 0x1c5b3
movq %rdx, %rbx
movq %rax, %r12
leaq 0x10(%rsp), %rdi
callq 0x1d5ee
jmp 0x1c5c5
movq %rdx, %rbx
movq %rax, %r12
movq 0x60(%rsp), %rdi
cmpq %r14, %rdi
je 0x1c604
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x1c604
movq %rax, %r12
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x1c8a2
movq 0x70(%rsp), %rsi
jmp 0x1c7d2
movq %rdx, %rbx
movq %rax, %r12
cmpl $0x1, %ebx
jne 0x1c8a2
movq %r12, %rdi
callq 0x101a0
movq %rax, %rbx
movq 0x98979(%rip), %rdi     # 0xb4f98
leaq 0x66ae6(%rip), %rsi     # 0x8310c
movl $0x21, %edx
callq 0x10490
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
leaq 0xf8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
movq %rax, %rsi
callq 0x1d0f8
movq 0xf8(%rsp), %rsi
movq 0x100(%rsp), %rdx
movq 0x98933(%rip), %rdi     # 0xb4f98
callq 0x10490
leaq 0x6848c(%rip), %rsi     # 0x84afd
movl $0x1, %edx
movq %rax, %rdi
callq 0x10490
movq 0xf8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1c69b
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x103d0
callq 0x10690
jmp 0x1bfb2
jmp 0x1c7df
movq %rax, %r12
movq 0xf8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1c6d1
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x1c6d1
jmp 0x1c6ce
movq %rax, %r12
callq 0x10690
jmp 0x1c8a2
jmp 0x1c7b6
jmp 0x1c7df
jmp 0x1c72c
movq %rdx, %rbx
movq %rax, %r12
movq 0xa8(%rsp), %rdi
testq %rdi, %rdi
je 0x1c762
callq 0x1e5bc
jmp 0x1c762
movq %rdx, %rbx
movq %rax, %r12
leaq 0x10(%rsp), %rdi
callq 0x1d5ee
jmp 0x1c745
jmp 0x1c72c
movq %rdx, %rbx
movq %rax, %r12
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1c762
movq 0x20(%rsp), %rsi
jmp 0x1c75a
movq %rdx, %rbx
movq %rax, %r12
jmp 0x1c762
jmp 0x1c7a4
jmp 0x1c7a4
jmp 0x1c7a4
jmp 0x1c7df
movq %rdx, %rbx
movq %rax, %r12
movq 0x80(%rsp), %rdi
cmpq %r14, %rdi
je 0x1c762
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x103d0
cmpl $0x1, %ebx
jne 0x1c85d
movq %r12, %rdi
callq 0x101a0
movq %rax, %rdi
callq 0x1f518
movl $0x1, %ebx
callq 0x10690
jmp 0x1bd31
jmp 0x1c85a
movq %rax, %r12
callq 0x10690
jmp 0x1c85d
movq %rax, %rdi
callq 0x1d626
movq %rax, %r12
jmp 0x1c895
jmp 0x1c7df
jmp 0x1c7b6
jmp 0x1c7df
jmp 0x1c7b6
jmp 0x1c7df
movq %rax, %r12
movq 0xf8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1c8a2
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x1c8a2
movq %rax, %r12
jmp 0x1c8a2
jmp 0x1c816
jmp 0x1c816
jmp 0x1c826
movq %rax, %r12
movq 0xf8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1c8af
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x1c8af
movq %rax, %r12
jmp 0x1c8af
movq %rax, %r12
jmp 0x1c8bc
movq %rax, %r12
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1c895
movq 0x20(%rsp), %rsi
jmp 0x1c88d
jmp 0x1c83c
movq %rax, %r12
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1c85d
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x1c85d
jmp 0x1c85a
movq %rax, %r12
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x1c879
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x1c895
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0xf8(%rsp), %rdi
callq 0x100d0
leaq 0x320(%rsp), %rdi
callq 0x207c2
leaq 0xc8(%rsp), %rdi
callq 0x1dbbe
leaq 0x390(%rsp), %rdi
callq 0x1db60
leaq 0x360(%rsp), %rdi
callq 0x1dbbe
movq %r12, %rdi
callq 0x106f0