// File: talyerushalmy[P]SimpleFileSystem/src/Environment.cpp
// Function: Environment::handleInput(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void Environment::handleInput(const string& input)
{
	if (verbose == 2 || verbose == 3)
		std::cout << input << std::endl;

	string first_word = input.substr(0, input.find(' '));
	string args = input.substr(first_word.size(), input.size() - first_word.size());

	switch (CommandTools::stringToCommand(first_word))
	{
	case CommandType::EmptyCommandType:
		// do and print nothing
		break;
	case CommandType::CdCommandType:
	{
		CdCommand cd_command(first_word, args);
		cd_command.execute(this->fs);
		this->addToHistory(new CdCommand(cd_command));
	}
	break;
	case CommandType::CpCommandType:
	{
		CpCommand cp_command(first_word, args);
		cp_command.execute(this->fs);
		this->addToHistory(new CpCommand(cp_command));
	}
	break;
	case CommandType::ExecCommandType:
	{
		ExecCommand exec_command(first_word, args, this->getHistory());
		exec_command.execute(this->fs);
		this->addToHistory(new ExecCommand(exec_command));
	}
	break;
	case CommandType::HistoryCommandType:
	{
		HistoryCommand history_command(first_word, args, this->getHistory());
		history_command.execute(this->fs);
		this->addToHistory(new HistoryCommand(history_command));
	}
	break;
	case CommandType::LsCommandType:
	{
		LsCommand ls_command(first_word, args);
		ls_command.execute(this->fs);
		this->addToHistory(new LsCommand(ls_command));
	}
	break;
	case CommandType::MkdirCommandType:
	{
		MkdirCommand mkdir_command(first_word, args);
		mkdir_command.execute(this->fs);
		this->addToHistory(new MkdirCommand(mkdir_command));
	}
	break;
	case CommandType::MkfileCommandType:
	{
		MkfileCommand mkfile_command(first_word, args);
		mkfile_command.execute(this->fs);
		this->addToHistory(new MkfileCommand(mkfile_command));
	}
	break;
	case CommandType::MvCommandType:
	{
		MvCommand mv_command(first_word, args);
		mv_command.execute(this->fs);
		this->addToHistory(new MvCommand(mv_command));
	}
	break;
	case CommandType::PwdCommandType:
	{
		PwdCommand pwd_command(first_word, args);
		pwd_command.execute(this->fs);
		this->addToHistory(new PwdCommand(pwd_command));
	}
	break;
	case CommandType::RenameCommandType:
	{
		RenameCommand rename_command(first_word, args);
		rename_command.execute(this->fs);
		this->addToHistory(new RenameCommand(rename_command));
	}
	break;
	case CommandType::RmCommandType:
	{
		RmCommand rm_command(first_word, args);
		rm_command.execute(this->fs);
		this->addToHistory(new RmCommand(rm_command));
	}
	break;
	case CommandType::VerboseCommandType:
	{
		VerboseCommand verbose_command(first_word, args);
		verbose_command.execute(this->fs);
		this->addToHistory(new VerboseCommand(verbose_command));
	}
	break;
	case CommandType::UnknownCommandType:
	default:
		ErrorCommand error_command(first_word, args);
		error_command.execute(this->fs);
		this->addToHistory(new ErrorCommand(error_command));
		break;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x810, %rsp            # imm = 0x810
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x760(%rbp)
leaq 0x17aff(%rip), %rax     # 0x1c1d4
cmpl $0x2, (%rax)
je 0x46e6
leaq 0x17af3(%rip), %rax     # 0x1c1d4
cmpl $0x3, (%rax)
jne 0x4705
movq -0x10(%rbp), %rsi
movq 0x178d7(%rip), %rdi     # 0x1bfc8
callq 0x3180
movq %rax, %rdi
movq 0x178b8(%rip), %rsi     # 0x1bfb8
callq 0x31e0
movq -0x10(%rbp), %rdi
movq %rdi, -0x790(%rbp)
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x788(%rbp)
movl $0x20, %esi
callq 0x3240
movq -0x790(%rbp), %rsi
movq -0x788(%rbp), %rdx
movq %rax, %rcx
leaq -0x30(%rbp), %rdi
movq %rdi, -0x780(%rbp)
callq 0x31d0
movq -0x780(%rbp), %rdi
movq -0x10(%rbp), %rax
movq %rax, -0x770(%rbp)
callq 0x3150
movq %rax, -0x768(%rbp)
movq -0x10(%rbp), %rdi
callq 0x3150
movq -0x780(%rbp), %rdi
movq %rax, -0x778(%rbp)
callq 0x3150
movq -0x778(%rbp), %rcx
movq -0x770(%rbp), %rsi
movq -0x768(%rbp), %rdx
subq %rax, %rcx
leaq -0x50(%rbp), %rdi
callq 0x31d0
jmp 0x47a3
leaq -0x30(%rbp), %rdi
callq 0xd6e0
movl %eax, -0x794(%rbp)
jmp 0x47b4
movl -0x794(%rbp), %eax
movl %eax, %ecx
movq %rcx, -0x7a0(%rbp)
subl $0xd, %eax
ja 0x5646
movq -0x7a0(%rbp), %rax
leaq 0xf846(%rip), %rcx      # 0x14020
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x578e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x5785
jmp 0x576a
leaq -0xc8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x30e0
jmp 0x481c
leaq -0xe8(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x30e0
jmp 0x482e
leaq -0xa8(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
leaq -0xe8(%rbp), %rdx
callq 0x8270
jmp 0x484a
leaq -0xe8(%rbp), %rdi
callq 0x3130
leaq -0xc8(%rbp), %rdi
callq 0x3130
movq -0x760(%rbp), %rsi
addq $0x18, %rsi
leaq -0xa8(%rbp), %rdi
callq 0x7f80
jmp 0x487b
movl $0x48, %edi
callq 0x31c0
movq %rax, -0x7a8(%rbp)
jmp 0x488e
movq -0x7a8(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x5da0
jmp 0x48a3
movq -0x7a8(%rbp), %rsi
movq -0x760(%rbp), %rdi
callq 0x57a0
jmp 0x48b8
leaq -0xa8(%rbp), %rdi
callq 0x5de0
jmp 0x576a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x48ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x3130
leaq -0xc8(%rbp), %rdi
callq 0x3130
jmp 0x5785
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4926
movq -0x7a8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x31a0
leaq -0xa8(%rbp), %rdi
callq 0x5de0
jmp 0x5785
leaq -0x150(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x30e0
jmp 0x4949
leaq -0x170(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x30e0
jmp 0x495b
leaq -0x130(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x170(%rbp), %rdx
callq 0xaad0
jmp 0x4977
leaq -0x170(%rbp), %rdi
callq 0x3130
leaq -0x150(%rbp), %rdi
callq 0x3130
movq -0x760(%rbp), %rsi
addq $0x18, %rsi
leaq -0x130(%rbp), %rdi
callq 0xa1e0
jmp 0x49a8
movl $0x48, %edi
callq 0x31c0
movq %rax, -0x7b0(%rbp)
jmp 0x49bb
movq -0x7b0(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x5e00
jmp 0x49d0
movq -0x7b0(%rbp), %rsi
movq -0x760(%rbp), %rdi
callq 0x57a0
jmp 0x49e5
leaq -0x130(%rbp), %rdi
callq 0x5e40
jmp 0x576a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4a1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x3130
leaq -0x150(%rbp), %rdi
callq 0x3130
jmp 0x5785
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4a53
movq -0x7b0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x31a0
leaq -0x130(%rbp), %rdi
callq 0x5e40
jmp 0x5785
leaq -0x1e0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x30e0
jmp 0x4a76
leaq -0x200(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x30e0
jmp 0x4a88
movq -0x760(%rbp), %rdi
callq 0x57d0
movq %rax, %rcx
leaq -0x1c0(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
leaq -0x200(%rbp), %rdx
callq 0xd650
jmp 0x4ab3
leaq -0x200(%rbp), %rdi
callq 0x3130
leaq -0x1e0(%rbp), %rdi
callq 0x3130
movq -0x760(%rbp), %rsi
addq $0x18, %rsi
leaq -0x1c0(%rbp), %rdi
callq 0xd260
jmp 0x4ae4
movl $0x50, %edi
callq 0x31c0
movq %rax, -0x7b8(%rbp)
jmp 0x4af7
movq -0x7b8(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x5e60
jmp 0x4b0c
movq -0x7b8(%rbp), %rsi
movq -0x760(%rbp), %rdi
callq 0x57a0
jmp 0x4b21
leaq -0x1c0(%rbp), %rdi
callq 0x5eb0
jmp 0x576a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4b58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x3130
leaq -0x1e0(%rbp), %rdi
callq 0x3130
jmp 0x5785
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4b8f
movq -0x7b8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x31a0
leaq -0x1c0(%rbp), %rdi
callq 0x5eb0
jmp 0x5785
leaq -0x270(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x30e0
jmp 0x4bb2
leaq -0x290(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x30e0
jmp 0x4bc4
movq -0x760(%rbp), %rdi
callq 0x57d0
movq %rax, %rcx
leaq -0x250(%rbp), %rdi
leaq -0x270(%rbp), %rsi
leaq -0x290(%rbp), %rdx
callq 0xcb50
jmp 0x4bef
leaq -0x290(%rbp), %rdi
callq 0x3130
leaq -0x270(%rbp), %rdi
callq 0x3130
movq -0x760(%rbp), %rsi
addq $0x18, %rsi
leaq -0x250(%rbp), %rdi
callq 0xc8c0
jmp 0x4c20
movl $0x50, %edi
callq 0x31c0
movq %rax, -0x7c0(%rbp)
jmp 0x4c33
movq -0x7c0(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x5ed0
jmp 0x4c48
movq -0x7c0(%rbp), %rsi
movq -0x760(%rbp), %rdi
callq 0x57a0
jmp 0x4c5d
leaq -0x250(%rbp), %rdi
callq 0x5f20
jmp 0x576a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4c94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x3130
leaq -0x270(%rbp), %rdi
callq 0x3130
jmp 0x5785
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4ccb
movq -0x7c0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x31a0
leaq -0x250(%rbp), %rdi
callq 0x5f20
jmp 0x5785
leaq -0x2f8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x30e0
jmp 0x4cee
leaq -0x318(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x30e0
jmp 0x4d00
leaq -0x2d8(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
leaq -0x318(%rbp), %rdx
callq 0x8a80
jmp 0x4d1c
leaq -0x318(%rbp), %rdi
callq 0x3130
leaq -0x2f8(%rbp), %rdi
callq 0x3130
movq -0x760(%rbp), %rsi
addq $0x18, %rsi
leaq -0x2d8(%rbp), %rdi
callq 0x83a0
jmp 0x4d4d
movl $0x48, %edi
callq 0x31c0
movq %rax, -0x7c8(%rbp)
jmp 0x4d60
movq -0x7c8(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0x5f40
jmp 0x4d75
movq -0x7c8(%rbp), %rsi
movq -0x760(%rbp), %rdi
callq 0x57a0
jmp 0x4d8a
leaq -0x2d8(%rbp), %rdi
callq 0x5f80
jmp 0x576a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4dc1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x3130
leaq -0x2f8(%rbp), %rdi
callq 0x3130
jmp 0x5785
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4df8
movq -0x7c8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x31a0
leaq -0x2d8(%rbp), %rdi
callq 0x5f80
jmp 0x5785
leaq -0x380(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x30e0
jmp 0x4e1b
leaq -0x3a0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x30e0
jmp 0x4e2d
leaq -0x360(%rbp), %rdi
leaq -0x380(%rbp), %rsi
leaq -0x3a0(%rbp), %rdx
callq 0x95a0
jmp 0x4e49
leaq -0x3a0(%rbp), %rdi
callq 0x3130
leaq -0x380(%rbp), %rdi
callq 0x3130
movq -0x760(%rbp), %rsi
addq $0x18, %rsi
leaq -0x360(%rbp), %rdi
callq 0x8bb0
jmp 0x4e7a
movl $0x48, %edi
callq 0x31c0
movq %rax, -0x7d0(%rbp)
jmp 0x4e8d
movq -0x7d0(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x5fa0
jmp 0x4ea2
movq -0x7d0(%rbp), %rsi
movq -0x760(%rbp), %rdi
callq 0x57a0
jmp 0x4eb7
leaq -0x360(%rbp), %rdi
callq 0x5fe0
jmp 0x576a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4eee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x3130
leaq -0x380(%rbp), %rdi
callq 0x3130
jmp 0x5785
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4f25
movq -0x7d0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x31a0
leaq -0x360(%rbp), %rdi
callq 0x5fe0
jmp 0x5785
leaq -0x408(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x30e0
jmp 0x4f48
leaq -0x428(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x30e0
jmp 0x4f5a
leaq -0x3e8(%rbp), %rdi
leaq -0x408(%rbp), %rsi
leaq -0x428(%rbp), %rdx
callq 0xa0b0
jmp 0x4f76
leaq -0x428(%rbp), %rdi
callq 0x3130
leaq -0x408(%rbp), %rdi
callq 0x3130
movq -0x760(%rbp), %rsi
addq $0x18, %rsi
leaq -0x3e8(%rbp), %rdi
callq 0x96d0
jmp 0x4fa7
movl $0x48, %edi
callq 0x31c0
movq %rax, -0x7d8(%rbp)
jmp 0x4fba
movq -0x7d8(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x6000
jmp 0x4fcf
movq -0x7d8(%rbp), %rsi
movq -0x760(%rbp), %rdi
callq 0x57a0
jmp 0x4fe4
leaq -0x3e8(%rbp), %rdi
callq 0x6040
jmp 0x576a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x501b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x428(%rbp), %rdi
callq 0x3130
leaq -0x408(%rbp), %rdi
callq 0x3130
jmp 0x5785
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x5052
movq -0x7d8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x31a0
leaq -0x3e8(%rbp), %rdi
callq 0x6040
jmp 0x5785
leaq -0x490(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x30e0
jmp 0x5075
leaq -0x4b0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x30e0
jmp 0x5087
leaq -0x470(%rbp), %rdi
leaq -0x490(%rbp), %rsi
leaq -0x4b0(%rbp), %rdx
callq 0xb770
jmp 0x50a3
leaq -0x4b0(%rbp), %rdi
callq 0x3130
leaq -0x490(%rbp), %rdi
callq 0x3130
movq -0x760(%rbp), %rsi
addq $0x18, %rsi
leaq -0x470(%rbp), %rdi
callq 0xac00
jmp 0x50d4
movl $0x48, %edi
callq 0x31c0
movq %rax, -0x7e0(%rbp)
jmp 0x50e7
movq -0x7e0(%rbp), %rdi
leaq -0x470(%rbp), %rsi
callq 0x6060
jmp 0x50fc
movq -0x7e0(%rbp), %rsi
movq -0x760(%rbp), %rdi
callq 0x57a0
jmp 0x5111
leaq -0x470(%rbp), %rdi
callq 0x60a0
jmp 0x576a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x5148
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x4b0(%rbp), %rdi
callq 0x3130
leaq -0x490(%rbp), %rdi
callq 0x3130
jmp 0x5785
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x517f
movq -0x7e0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x31a0
leaq -0x470(%rbp), %rdi
callq 0x60a0
jmp 0x5785
leaq -0x518(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x30e0
jmp 0x51a2
leaq -0x538(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x30e0
jmp 0x51b4
leaq -0x4f8(%rbp), %rdi
leaq -0x518(%rbp), %rsi
leaq -0x538(%rbp), %rdx
callq 0x7e50
jmp 0x51d0
leaq -0x538(%rbp), %rdi
callq 0x3130
leaq -0x518(%rbp), %rdi
callq 0x3130
movq -0x760(%rbp), %rsi
addq $0x18, %rsi
leaq -0x4f8(%rbp), %rdi
callq 0x7d20
jmp 0x5201
movl $0x48, %edi
callq 0x31c0
movq %rax, -0x7e8(%rbp)
jmp 0x5214
movq -0x7e8(%rbp), %rdi
leaq -0x4f8(%rbp), %rsi
callq 0x60c0
jmp 0x5229
movq -0x7e8(%rbp), %rsi
movq -0x760(%rbp), %rdi
callq 0x57a0
jmp 0x523e
leaq -0x4f8(%rbp), %rdi
callq 0x6100
jmp 0x576a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x5275
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x538(%rbp), %rdi
callq 0x3130
leaq -0x518(%rbp), %rdi
callq 0x3130
jmp 0x5785
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x52ac
movq -0x7e8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x31a0
leaq -0x4f8(%rbp), %rdi
callq 0x6100
jmp 0x5785
leaq -0x5a0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x30e0
jmp 0x52cf
leaq -0x5c0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x30e0
jmp 0x52e1
leaq -0x580(%rbp), %rdi
leaq -0x5a0(%rbp), %rsi
leaq -0x5c0(%rbp), %rdx
callq 0xbed0
jmp 0x52fd
leaq -0x5c0(%rbp), %rdi
callq 0x3130
leaq -0x5a0(%rbp), %rdi
callq 0x3130
movq -0x760(%rbp), %rsi
addq $0x18, %rsi
leaq -0x580(%rbp), %rdi
callq 0xb8a0
jmp 0x532e
movl $0x48, %edi
callq 0x31c0
movq %rax, -0x7f0(%rbp)
jmp 0x5341
movq -0x7f0(%rbp), %rdi
leaq -0x580(%rbp), %rsi
callq 0x6120
jmp 0x5356
movq -0x7f0(%rbp), %rsi
movq -0x760(%rbp), %rdi
callq 0x57a0
jmp 0x536b
leaq -0x580(%rbp), %rdi
callq 0x6160
jmp 0x576a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x53a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x5c0(%rbp), %rdi
callq 0x3130
leaq -0x5a0(%rbp), %rdi
callq 0x3130
jmp 0x5785
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x53d9
movq -0x7f0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x31a0
leaq -0x580(%rbp), %rdi
callq 0x6160
jmp 0x5785
leaq -0x628(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x30e0
jmp 0x53fc
leaq -0x648(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x30e0
jmp 0x540e
leaq -0x608(%rbp), %rdi
leaq -0x628(%rbp), %rsi
leaq -0x648(%rbp), %rdx
callq 0xc790
jmp 0x542a
leaq -0x648(%rbp), %rdi
callq 0x3130
leaq -0x628(%rbp), %rdi
callq 0x3130
movq -0x760(%rbp), %rsi
addq $0x18, %rsi
leaq -0x608(%rbp), %rdi
callq 0xc000
jmp 0x545b
movl $0x48, %edi
callq 0x31c0
movq %rax, -0x7f8(%rbp)
jmp 0x546e
movq -0x7f8(%rbp), %rdi
leaq -0x608(%rbp), %rsi
callq 0x6180
jmp 0x5483
movq -0x7f8(%rbp), %rsi
movq -0x760(%rbp), %rdi
callq 0x57a0
jmp 0x5498
leaq -0x608(%rbp), %rdi
callq 0x61c0
jmp 0x576a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x54cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x648(%rbp), %rdi
callq 0x3130
leaq -0x628(%rbp), %rdi
callq 0x3130
jmp 0x5785
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x5506
movq -0x7f8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x31a0
leaq -0x608(%rbp), %rdi
callq 0x61c0
jmp 0x5785
leaq -0x6b0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x30e0
jmp 0x5529
leaq -0x6d0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x30e0
jmp 0x553b
leaq -0x690(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
leaq -0x6d0(%rbp), %rdx
callq 0xcec0
jmp 0x5557
leaq -0x6d0(%rbp), %rdi
callq 0x3130
leaq -0x6b0(%rbp), %rdi
callq 0x3130
movq -0x760(%rbp), %rsi
addq $0x18, %rsi
leaq -0x690(%rbp), %rdi
callq 0xcc90
jmp 0x5588
movl $0x48, %edi
callq 0x31c0
movq %rax, -0x800(%rbp)
jmp 0x559b
movq -0x800(%rbp), %rdi
leaq -0x690(%rbp), %rsi
callq 0x61e0
jmp 0x55b0
movq -0x800(%rbp), %rsi
movq -0x760(%rbp), %rdi
callq 0x57a0
jmp 0x55c5
leaq -0x690(%rbp), %rdi
callq 0x6220
jmp 0x576a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x55fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x6d0(%rbp), %rdi
callq 0x3130
leaq -0x6b0(%rbp), %rdi
callq 0x3130
jmp 0x5785
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x5633
movq -0x800(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x31a0
leaq -0x690(%rbp), %rdi
callq 0x6220
jmp 0x5785
jmp 0x5646
leaq -0x738(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x30e0
jmp 0x5658
leaq -0x758(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x30e0
jmp 0x566a
leaq -0x718(%rbp), %rdi
leaq -0x738(%rbp), %rsi
leaq -0x758(%rbp), %rdx
callq 0xcff0
jmp 0x5686
leaq -0x758(%rbp), %rdi
callq 0x3130
leaq -0x738(%rbp), %rdi
callq 0x3130
movq -0x760(%rbp), %rsi
addq $0x18, %rsi
leaq -0x718(%rbp), %rdi
callq 0xd0a0
jmp 0x56b7
movl $0x48, %edi
callq 0x31c0
movq %rax, -0x808(%rbp)
jmp 0x56ca
movq -0x808(%rbp), %rdi
leaq -0x718(%rbp), %rsi
callq 0x6240
jmp 0x56df
movq -0x808(%rbp), %rsi
movq -0x760(%rbp), %rdi
callq 0x57a0
jmp 0x56f4
leaq -0x718(%rbp), %rdi
callq 0x6280
jmp 0x576a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x5728
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x758(%rbp), %rdi
callq 0x3130
leaq -0x738(%rbp), %rdi
callq 0x3130
jmp 0x5785
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x575c
movq -0x808(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x31a0
leaq -0x718(%rbp), %rdi
callq 0x6280
jmp 0x5785
leaq -0x50(%rbp), %rdi
callq 0x3130
leaq -0x30(%rbp), %rdi
callq 0x3130
addq $0x810, %rsp            # imm = 0x810
popq %rbp
retq
leaq -0x50(%rbp), %rdi
callq 0x3130
leaq -0x30(%rbp), %rdi
callq 0x3130
movq -0x58(%rbp), %rdi
callq 0x3300