// File: JD297[P]cedit/src/cedit.cpp
// Function: cedit::Cedit::event_load(char const*)
void Cedit::event_load(const char* filename)
{
	if(!this->filename.empty())
	{
		this->session[this->filename] = {
			this->content,
			std::distance(this->content.begin(), this->contentIt),
			this->currentIndex,
			this->savedIndex,
			this->entryLine,
			this->showLineNumbers
		};
	}

	this->reset();

	std::string message = "";
	std::string message_filename = "\"" + std::string(filename) + "\"";

	const auto fs_status = std::filesystem::status(filename);

	if(!std::filesystem::exists(fs_status))
	{
		this->filename = std::string(filename);
		this->refreshHeader = true;

		this->menu.display(NEW_FILE);

		return;
	}
	else if(std::filesystem::is_directory(fs_status)) {
		this->menu.display(message_filename + IS_DIRECTORY, COLOR_RED);

		return;
	}
	else if(std::filesystem::is_block_file(fs_status))
	{
		this->menu.display(message_filename + IS_BLOCK_FILE, COLOR_YELLOW);

		return;
	}
	else if(std::filesystem::is_character_file(fs_status))
	{
		this->menu.display(message_filename + IS_CHARACTER_FILE, COLOR_YELLOW);

		return;
	}
	else if(std::filesystem::is_fifo(fs_status))
	{
		this->menu.display(message_filename + IS_FIFO, COLOR_YELLOW);

		return;
	}
	else if(std::filesystem::is_socket(fs_status))
	{
		this->menu.display(message_filename + IS_SOCKET, COLOR_YELLOW);

		return;
	}
	else if(std::filesystem::is_symlink(fs_status))
	{
		this->menu.display(message_filename + IS_SYMLINK, COLOR_YELLOW);

		return;
	}
	else if(!std::filesystem::is_regular_file(fs_status))
	{
		this->menu.display(message_filename + IS_NOT_REGULAR_FILE, COLOR_YELLOW);

		return;
	}

	std::ifstream f(std::string(filename), std::ios::in);

	if(!f.good())
	{
		if(errno)
		{
			this->menu.display(std::string(FAIL_READ) + std::string("\"") + std::string(filename) + "\": " + std::strerror(errno), COLOR_RED);
		}
		else
		{
			this->menu.display(NEW_FILE);
		}

		this->filename = "";

		return;
	}

	this->filename = std::string(filename);

	this->refreshHeader = true;

	this->content.clear();

	while(!f.eof())
	{
		std::string line;
		getline(f, line);

		this->content.emplace_back(line+"\n");
	}

	f.close();

	this->content.rbegin()->clear();

	this->contentIt = this->content.begin();

	if(this->session.find(this->filename) != this->session.end())
	{
		std::advance(this->contentIt, this->session[this->filename].contentIndex);
		this->currentIndex = this->session[this->filename].currentIndex;
		this->savedIndex = this->session[this->filename].savedIndex;
		this->entryLine = this->session[this->filename].entryLine;
		this->showLineNumbers = this->session[this->filename].showLineNumbers;
	}

	this->menu.display(std::to_string(this->content.size()-1) + " " + LOAD);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x850, %rsp            # imm = 0x850
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x6e0(%rbp)
addq $0x70, %rdi
callq 0x46c0
testb $0x1, %al
jne 0x74af
movq -0x6e0(%rbp), %rsi
leaq -0x50(%rbp), %rdi
movq %rdi, -0x6f8(%rbp)
callq 0x95c0
movq -0x6e0(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, -0x6f0(%rbp)
callq 0x91c0
movq %rax, %rcx
movq -0x6e0(%rbp), %rax
movq %rcx, -0x58(%rbp)
movq 0x18(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x58(%rbp), %rdi
movq -0x60(%rbp), %rsi
callq 0x9680
movq %rax, -0x6e8(%rbp)
jmp 0x7409
movq -0x6e0(%rbp), %rsi
movq -0x6f0(%rbp), %rax
movq -0x6e8(%rbp), %rcx
movq %rcx, (%rax)
movq 0x50(%rsi), %rax
movq %rax, -0x30(%rbp)
movq 0x58(%rsi), %rax
movq %rax, -0x28(%rbp)
movq 0x60(%rsi), %rax
movq %rax, -0x20(%rbp)
movb 0x90(%rsi), %al
andb $0x1, %al
movb %al, -0x18(%rbp)
movq %rsi, %rdi
addq $0x20, %rdi
addq $0x70, %rsi
callq 0x96c0
movq %rax, -0x700(%rbp)
jmp 0x745d
movq -0x700(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x97a0
leaq -0x50(%rbp), %rdi
callq 0x97f0
jmp 0x74af
movq -0x6f8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
callq 0x9230
jmp 0x857f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x97f0
jmp 0x857f
movq -0x6e0(%rbp), %rdi
callq 0x4c70
leaq -0x91(%rbp), %rdi
movq %rdi, -0x708(%rbp)
callq 0x4710
movq -0x708(%rbp), %rdx
leaq 0x6d9d(%rip), %rsi      # 0xe279
leaq -0x90(%rbp), %rdi
callq 0x90c0
jmp 0x74ea
leaq -0x91(%rbp), %rdi
callq 0x44a0
movq -0x10(%rbp), %rax
movq %rax, -0x718(%rbp)
leaq -0xf9(%rbp), %rdi
movq %rdi, -0x710(%rbp)
callq 0x4710
movq -0x718(%rbp), %rsi
movq -0x710(%rbp), %rdx
leaq -0xf8(%rbp), %rdi
callq 0x90c0
jmp 0x7530
leaq 0x6b04(%rip), %rsi      # 0xe03b
leaq -0xd8(%rbp), %rdi
leaq -0xf8(%rbp), %rdx
callq 0x9810
jmp 0x754c
leaq 0x6ae8(%rip), %rdx      # 0xe03b
leaq -0xb8(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x9390
jmp 0x7568
leaq -0xd8(%rbp), %rdi
callq 0x42d0
leaq -0xf8(%rbp), %rdi
callq 0x42d0
leaq -0xf9(%rbp), %rdi
callq 0x44a0
leaq -0x130(%rbp), %rdi
leaq -0x10(%rbp), %rsi
movl $0x2, %edx
callq 0x9860
jmp 0x75a3
leaq -0x130(%rbp), %rdi
callq 0x41c0
movq %rax, -0x720(%rbp)
jmp 0x75b8
movq -0x720(%rbp), %rax
movq %rax, -0x104(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x9940
movq -0x104(%rbp), %rax
movq %rax, -0x138(%rbp)
movq -0x138(%rbp), %rdi
callq 0x9970
testb $0x1, %al
jne 0x77d9
movq -0x10(%rbp), %rax
movq %rax, -0x730(%rbp)
leaq -0x159(%rbp), %rdi
movq %rdi, -0x728(%rbp)
callq 0x4710
movq -0x730(%rbp), %rsi
movq -0x728(%rbp), %rdx
leaq -0x158(%rbp), %rdi
callq 0x90c0
jmp 0x762e
movq -0x6e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x158(%rbp), %rsi
movq %rsi, -0x748(%rbp)
callq 0x4570
movq -0x748(%rbp), %rdi
callq 0x42d0
leaq -0x159(%rbp), %rdi
callq 0x44a0
movq -0x6e0(%rbp), %rax
movb $0x1, 0x6d(%rax)
addq $0xb0, %rax
movq %rax, -0x740(%rbp)
leaq -0x181(%rbp), %rdi
movq %rdi, -0x738(%rbp)
callq 0x4710
movq -0x738(%rbp), %rdx
leaq 0x69b0(%rip), %rsi      # 0xe04d
leaq -0x180(%rbp), %rdi
callq 0x90c0
jmp 0x76ab
movq -0x740(%rbp), %rdi
leaq -0x180(%rbp), %rsi
xorl %edx, %edx
callq 0xd4f0
jmp 0x76c2
leaq -0x180(%rbp), %rdi
callq 0x42d0
leaq -0x181(%rbp), %rdi
callq 0x44a0
movl $0x1, -0x188(%rbp)
jmp 0x84ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x91(%rbp), %rdi
callq 0x44a0
jmp 0x857f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x7746
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x773a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x42d0
leaq -0xf8(%rbp), %rdi
callq 0x42d0
leaq -0xf9(%rbp), %rdi
callq 0x44a0
jmp 0x8573
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x8567
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x9940
jmp 0x8567
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x159(%rbp), %rdi
callq 0x44a0
jmp 0x8567
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x77c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x42d0
leaq -0x181(%rbp), %rdi
callq 0x44a0
jmp 0x8567
movq -0x104(%rbp), %rax
movq %rax, -0x190(%rbp)
movq -0x190(%rbp), %rdi
callq 0x99c0
testb $0x1, %al
jne 0x77fc
jmp 0x787e
movq -0x6e0(%rbp), %rax
addq $0xb0, %rax
movq %rax, -0x750(%rbp)
leaq 0x683f(%rip), %rdx      # 0xe056
leaq -0x1b0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x99f0
jmp 0x782c
movq -0x750(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
movl $0x1, %edx
callq 0xd4f0
jmp 0x7846
leaq -0x1b0(%rbp), %rdi
callq 0x42d0
movl $0x1, -0x188(%rbp)
jmp 0x84ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x42d0
jmp 0x8567
movq -0x104(%rbp), %rax
movq %rax, -0x1b8(%rbp)
movq -0x1b8(%rbp), %rdi
callq 0x9a70
testb $0x1, %al
jne 0x78a1
jmp 0x7923
movq -0x6e0(%rbp), %rax
addq $0xb0, %rax
movq %rax, -0x758(%rbp)
leaq 0x67aa(%rip), %rdx      # 0xe066
leaq -0x1d8(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x99f0
jmp 0x78d1
movq -0x758(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
movl $0x3, %edx
callq 0xd4f0
jmp 0x78eb
leaq -0x1d8(%rbp), %rdi
callq 0x42d0
movl $0x1, -0x188(%rbp)
jmp 0x84ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x42d0
jmp 0x8567
movq -0x104(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movq -0x1e0(%rbp), %rdi
callq 0x9aa0
testb $0x1, %al
jne 0x7946
jmp 0x79c8
movq -0x6e0(%rbp), %rax
addq $0xb0, %rax
movq %rax, -0x760(%rbp)
leaq 0x6718(%rip), %rdx      # 0xe079
leaq -0x200(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x99f0
jmp 0x7976
movq -0x760(%rbp), %rdi
leaq -0x200(%rbp), %rsi
movl $0x3, %edx
callq 0xd4f0
jmp 0x7990
leaq -0x200(%rbp), %rdi
callq 0x42d0
movl $0x1, -0x188(%rbp)
jmp 0x84ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x42d0
jmp 0x8567
movq -0x104(%rbp), %rax
movq %rax, -0x208(%rbp)
movq -0x208(%rbp), %rdi
callq 0x9ad0
testb $0x1, %al
jne 0x79eb
jmp 0x7a6d
movq -0x6e0(%rbp), %rax
addq $0xb0, %rax
movq %rax, -0x768(%rbp)
leaq 0x668a(%rip), %rdx      # 0xe090
leaq -0x228(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x99f0
jmp 0x7a1b
movq -0x768(%rbp), %rdi
leaq -0x228(%rbp), %rsi
movl $0x3, %edx
callq 0xd4f0
jmp 0x7a35
leaq -0x228(%rbp), %rdi
callq 0x42d0
movl $0x1, -0x188(%rbp)
jmp 0x84ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x42d0
jmp 0x8567
movq -0x104(%rbp), %rax
movq %rax, -0x230(%rbp)
movq -0x230(%rbp), %rdi
callq 0x9b00
testb $0x1, %al
jne 0x7a90
jmp 0x7b12
movq -0x6e0(%rbp), %rax
addq $0xb0, %rax
movq %rax, -0x770(%rbp)
leaq 0x65fa(%rip), %rdx      # 0xe0a5
leaq -0x250(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x99f0
jmp 0x7ac0
movq -0x770(%rbp), %rdi
leaq -0x250(%rbp), %rsi
movl $0x3, %edx
callq 0xd4f0
jmp 0x7ada
leaq -0x250(%rbp), %rdi
callq 0x42d0
movl $0x1, -0x188(%rbp)
jmp 0x84ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x42d0
jmp 0x8567
movq -0x104(%rbp), %rax
movq %rax, -0x258(%rbp)
movq -0x258(%rbp), %rdi
callq 0x9b30
testb $0x1, %al
jne 0x7b35
jmp 0x7bb7
movq -0x6e0(%rbp), %rax
addq $0xb0, %rax
movq %rax, -0x778(%rbp)
leaq 0x656c(%rip), %rdx      # 0xe0bc
leaq -0x278(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x99f0
jmp 0x7b65
movq -0x778(%rbp), %rdi
leaq -0x278(%rbp), %rsi
movl $0x3, %edx
callq 0xd4f0
jmp 0x7b7f
leaq -0x278(%rbp), %rdi
callq 0x42d0
movl $0x1, -0x188(%rbp)
jmp 0x84ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x42d0
jmp 0x8567
movq -0x104(%rbp), %rax
movq %rax, -0x280(%rbp)
movq -0x280(%rbp), %rdi
callq 0x9b60
testb $0x1, %al
jne 0x7c5b
movq -0x6e0(%rbp), %rax
addq $0xb0, %rax
movq %rax, -0x780(%rbp)
leaq 0x64d6(%rip), %rdx      # 0xe0ca
leaq -0x2a0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x99f0
jmp 0x7c09
movq -0x780(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
movl $0x3, %edx
callq 0xd4f0
jmp 0x7c23
leaq -0x2a0(%rbp), %rdi
callq 0x42d0
movl $0x1, -0x188(%rbp)
jmp 0x84ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0x42d0
jmp 0x8567
jmp 0x7c5d
jmp 0x7c5f
jmp 0x7c61
jmp 0x7c63
jmp 0x7c65
jmp 0x7c67
jmp 0x7c69
movq -0x10(%rbp), %rax
movq %rax, -0x790(%rbp)
leaq -0x4c9(%rbp), %rdi
movq %rdi, -0x788(%rbp)
callq 0x4710
movq -0x790(%rbp), %rsi
movq -0x788(%rbp), %rdx
leaq -0x4c8(%rbp), %rdi
callq 0x90c0
jmp 0x7ca3
leaq -0x4a8(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
movl $0x8, %edx
callq 0x4690
jmp 0x7cbd
leaq -0x4c8(%rbp), %rdi
callq 0x42d0
leaq -0x4c9(%rbp), %rdi
callq 0x44a0
movq -0x4a8(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x4a8(%rbp,%rax), %rdi
callq 0x46e0
movb %al, -0x791(%rbp)
jmp 0x7cf5
movb -0x791(%rbp), %al
testb $0x1, %al
jne 0x80dd
jmp 0x7d05
callq 0x4060
cmpl $0x0, (%rax)
je 0x800a
movq -0x6e0(%rbp), %rax
addq $0xb0, %rax
movq %rax, -0x7a8(%rbp)
leaq -0x571(%rbp), %rdi
movq %rdi, -0x7a0(%rbp)
callq 0x4710
movq -0x7a0(%rbp), %rdx
leaq 0x6399(%rip), %rsi      # 0xe0e1
leaq -0x570(%rbp), %rdi
callq 0x90c0
jmp 0x7d56
leaq -0x599(%rbp), %rdi
movq %rdi, -0x7b0(%rbp)
callq 0x4710
movq -0x7b0(%rbp), %rdx
leaq 0x62c4(%rip), %rsi      # 0xe03b
leaq -0x598(%rbp), %rdi
callq 0x90c0
jmp 0x7d85
leaq -0x550(%rbp), %rdi
leaq -0x570(%rbp), %rsi
leaq -0x598(%rbp), %rdx
callq 0x93e0
jmp 0x7da1
movq -0x10(%rbp), %rax
movq %rax, -0x7c0(%rbp)
leaq -0x5c1(%rbp), %rdi
movq %rdi, -0x7b8(%rbp)
callq 0x4710
movq -0x7c0(%rbp), %rsi
movq -0x7b8(%rbp), %rdx
leaq -0x5c0(%rbp), %rdi
callq 0x90c0
jmp 0x7ddb
leaq -0x530(%rbp), %rdi
leaq -0x550(%rbp), %rsi
leaq -0x5c0(%rbp), %rdx
callq 0x93e0
jmp 0x7df7
leaq 0x623f(%rip), %rdx      # 0xe03d
leaq -0x510(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0x9390
jmp 0x7e13
callq 0x4060
movl (%rax), %edi
callq 0x41a0
movq %rax, %rdx
leaq -0x4f0(%rbp), %rdi
leaq -0x510(%rbp), %rsi
callq 0x9390
jmp 0x7e37
movq -0x7a8(%rbp), %rdi
leaq -0x4f0(%rbp), %rsi
movl $0x1, %edx
callq 0xd4f0
jmp 0x7e51
leaq -0x4f0(%rbp), %rdi
callq 0x42d0
leaq -0x510(%rbp), %rdi
callq 0x42d0
leaq -0x530(%rbp), %rdi
callq 0x42d0
leaq -0x5c0(%rbp), %rdi
callq 0x42d0
leaq -0x5c1(%rbp), %rdi
callq 0x44a0
leaq -0x550(%rbp), %rdi
callq 0x42d0
leaq -0x598(%rbp), %rdi
callq 0x42d0
leaq -0x599(%rbp), %rdi
callq 0x44a0
leaq -0x570(%rbp), %rdi
callq 0x42d0
leaq -0x571(%rbp), %rdi
callq 0x44a0
jmp 0x80b5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x7ef4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x4c8(%rbp), %rdi
callq 0x42d0
leaq -0x4c9(%rbp), %rdi
callq 0x44a0
jmp 0x8567
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x855b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x7ff9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x7fe1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x7fd5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x7fbd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x7fb1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x7fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x7f99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x4f0(%rbp), %rdi
callq 0x42d0
leaq -0x510(%rbp), %rdi
callq 0x42d0
leaq -0x530(%rbp), %rdi
callq 0x42d0
leaq -0x5c0(%rbp), %rdi
callq 0x42d0
leaq -0x5c1(%rbp), %rdi
callq 0x44a0
leaq -0x550(%rbp), %rdi
callq 0x42d0
leaq -0x598(%rbp), %rdi
callq 0x42d0
leaq -0x599(%rbp), %rdi
callq 0x44a0
leaq -0x570(%rbp), %rdi
callq 0x42d0
leaq -0x571(%rbp), %rdi
callq 0x44a0
jmp 0x855b
movq -0x6e0(%rbp), %rax
addq $0xb0, %rax
movq %rax, -0x7d0(%rbp)
leaq -0x5e9(%rbp), %rdi
movq %rdi, -0x7c8(%rbp)
callq 0x4710
movq -0x7c8(%rbp), %rdx
leaq 0x600e(%rip), %rsi      # 0xe04d
leaq -0x5e8(%rbp), %rdi
callq 0x90c0
jmp 0x804d
movq -0x7d0(%rbp), %rdi
leaq -0x5e8(%rbp), %rsi
xorl %edx, %edx
callq 0xd4f0
jmp 0x8064
leaq -0x5e8(%rbp), %rdi
callq 0x42d0
leaq -0x5e9(%rbp), %rdi
callq 0x44a0
jmp 0x80b5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x80a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x5e8(%rbp), %rdi
callq 0x42d0
leaq -0x5e9(%rbp), %rdi
callq 0x44a0
jmp 0x855b
movq -0x6e0(%rbp), %rdi
addq $0x70, %rdi
leaq 0x61b2(%rip), %rsi      # 0xe279
callq 0x45c0
jmp 0x80ce
movl $0x1, -0x188(%rbp)
jmp 0x84e2
movq -0x10(%rbp), %rax
movq %rax, -0x7e0(%rbp)
leaq -0x611(%rbp), %rdi
movq %rdi, -0x7d8(%rbp)
callq 0x4710
movq -0x7e0(%rbp), %rsi
movq -0x7d8(%rbp), %rdx
leaq -0x610(%rbp), %rdi
callq 0x90c0
jmp 0x8117
movq -0x6e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x610(%rbp), %rsi
callq 0x4570
leaq -0x610(%rbp), %rdi
callq 0x42d0
leaq -0x611(%rbp), %rdi
callq 0x44a0
movq -0x6e0(%rbp), %rdi
movb $0x1, 0x6d(%rdi)
callq 0x9250
movq -0x4a8(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x4a8(%rbp,%rax), %rdi
callq 0x4730
movb %al, -0x7e1(%rbp)
jmp 0x8176
movb -0x7e1(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x8187
jmp 0x825f
leaq -0x638(%rbp), %rdi
movq %rdi, -0x7f0(%rbp)
callq 0x45d0
movq -0x7f0(%rbp), %rsi
leaq -0x4a8(%rbp), %rdi
callq 0x40d0
jmp 0x81af
movq -0x6e0(%rbp), %rax
movq %rax, -0x7f8(%rbp)
leaq 0x60b4(%rip), %rdx      # 0xe278
leaq -0x658(%rbp), %rdi
leaq -0x638(%rbp), %rsi
callq 0x99f0
jmp 0x81d9
movq -0x7f8(%rbp), %rdi
leaq -0x658(%rbp), %rsi
callq 0x9b90
jmp 0x81ee
leaq -0x658(%rbp), %rdi
callq 0x42d0
leaq -0x638(%rbp), %rdi
callq 0x42d0
jmp 0x8156
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x611(%rbp), %rdi
callq 0x44a0
jmp 0x855b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x824e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x658(%rbp), %rdi
callq 0x42d0
leaq -0x638(%rbp), %rdi
callq 0x42d0
jmp 0x855b
leaq -0x4a8(%rbp), %rdi
callq 0x40e0
jmp 0x826d
movq -0x6e0(%rbp), %rsi
leaq -0x660(%rbp), %rdi
movq %rdi, -0x808(%rbp)
callq 0x9be0
movq -0x808(%rbp), %rdi
callq 0x9c30
movq %rax, -0x800(%rbp)
jmp 0x829c
movq -0x800(%rbp), %rdi
callq 0x45b0
movq -0x6e0(%rbp), %rdi
callq 0x91c0
movq -0x6e0(%rbp), %rsi
movq %rax, -0x668(%rbp)
movq -0x668(%rbp), %rax
movq %rax, 0x18(%rsi)
movq %rsi, %rdi
addq $0x20, %rdi
addq $0x70, %rsi
callq 0x9ca0
movq %rax, -0x810(%rbp)
jmp 0x82e6
movq -0x6e0(%rbp), %rdi
movq -0x810(%rbp), %rax
movq %rax, -0x670(%rbp)
addq $0x20, %rdi
callq 0x9cd0
movq %rax, -0x678(%rbp)
leaq -0x670(%rbp), %rdi
leaq -0x678(%rbp), %rsi
callq 0x9c70
testb $0x1, %al
jne 0x8327
jmp 0x8435
movq -0x6e0(%rbp), %rsi
movq %rsi, %rax
addq $0x18, %rax
movq %rax, -0x820(%rbp)
movq %rsi, %rdi
addq $0x20, %rdi
addq $0x70, %rsi
callq 0x96c0
movq %rax, -0x818(%rbp)
jmp 0x8355
movq -0x820(%rbp), %rdi
movq -0x818(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x9d00
jmp 0x836e
movq -0x6e0(%rbp), %rsi
movq %rsi, %rdi
addq $0x20, %rdi
addq $0x70, %rsi
callq 0x96c0
movq %rax, -0x828(%rbp)
jmp 0x838e
movq -0x6e0(%rbp), %rsi
movq -0x828(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, 0x50(%rsi)
movq %rsi, %rdi
addq $0x20, %rdi
addq $0x70, %rsi
callq 0x96c0
movq %rax, -0x830(%rbp)
jmp 0x83bd
movq -0x6e0(%rbp), %rsi
movq -0x830(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x58(%rsi)
movq %rsi, %rdi
addq $0x20, %rdi
addq $0x70, %rsi
callq 0x96c0
movq %rax, -0x838(%rbp)
jmp 0x83ec
movq -0x6e0(%rbp), %rsi
movq -0x838(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, 0x60(%rsi)
movq %rsi, %rdi
addq $0x20, %rdi
addq $0x70, %rsi
callq 0x96c0
movq %rax, -0x840(%rbp)
jmp 0x841b
movq -0x6e0(%rbp), %rax
movq -0x840(%rbp), %rcx
movb 0x38(%rcx), %cl
andb $0x1, %cl
movb %cl, 0x90(%rax)
movq -0x6e0(%rbp), %rdi
movq %rdi, %rax
addq $0xb0, %rax
movq %rax, -0x848(%rbp)
callq 0x9590
movq %rax, %rsi
decq %rsi
leaq -0x6d8(%rbp), %rdi
callq 0x94b0
jmp 0x8465
leaq 0x5cd8(%rip), %rdx      # 0xe144
leaq -0x6b8(%rbp), %rdi
leaq -0x6d8(%rbp), %rsi
callq 0x9390
jmp 0x8481
leaq 0x5c74(%rip), %rdx      # 0xe0fc
leaq -0x698(%rbp), %rdi
leaq -0x6b8(%rbp), %rsi
callq 0x9390
jmp 0x849d
movq -0x848(%rbp), %rdi
leaq -0x698(%rbp), %rsi
xorl %edx, %edx
callq 0xd4f0
jmp 0x84b4
leaq -0x698(%rbp), %rdi
callq 0x42d0
leaq -0x6b8(%rbp), %rdi
callq 0x42d0
leaq -0x6d8(%rbp), %rdi
callq 0x42d0
movl $0x0, -0x188(%rbp)
leaq -0x4a8(%rbp), %rdi
callq 0x4140
leaq -0xb8(%rbp), %rdi
callq 0x42d0
leaq -0x90(%rbp), %rdi
callq 0x42d0
addq $0x850, %rsp            # imm = 0x850
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x854f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x8543
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x698(%rbp), %rdi
callq 0x42d0
leaq -0x6b8(%rbp), %rdi
callq 0x42d0
leaq -0x6d8(%rbp), %rdi
callq 0x42d0
leaq -0x4a8(%rbp), %rdi
callq 0x4140
leaq -0xb8(%rbp), %rdi
callq 0x42d0
leaq -0x90(%rbp), %rdi
callq 0x42d0
movq -0x68(%rbp), %rdi
callq 0x4700
nopl (%rax,%rax)