// File: FalconUA[P]vfs/./utility/cp.h
// Function: virt::util::cp::launch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
std::string launch(std::string param){
			virt::util::shell* sh;
			if ((sh = dynamic_cast<virt::util::shell*>(working_os->app("shell"))) == NULL)
				return "ERROR: No module named \"shell\" found!";

			while (param[0] == ' ')
				param.erase(0, 1);
			while (param[param.length()-1] == ' ')
				param.erase(param.length()-1, 1);

			std::size_t p = std::min(param.find(' '), param.length());	
			std::string first_path = param.substr(0, p);

			if (first_path.find(' ') != std::string::npos || first_path.find('/') != std::string::npos
					|| first_path == "" || first_path == "." || first_path == "..")
				return "Invalid second file name. Please see 'help cp' for more information.\n";
			param.erase(0, p+1);

			virt::filesystem::dir_iterator it_source = sh->shell_iterator;
			virt::filesystem::dir_iterator it_dest = sh->shell_iterator;

			if (it_dest.get_working_dir()->path().find(it_source.get_working_dir()->path()))
				return "Cannot copy: destination is a sub directory of source. See 'help cp'\n";

			bool b = true;

			b = b && it_source.move_to(first_path);
			b = b && it_dest.move_to(param);

			if (!b)
				return "Directory not found. See 'help mv' for more information.\n";
			
			virt::fs::copy_content(it_source.get_working_dir(), it_dest.get_working_dir());
			return "";
		}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1f0, %rsp            # imm = 0x1F0
movq %rdx, -0x180(%rbp)
movq %rdi, -0x178(%rbp)
movq %rdi, %rax
movq %rax, -0x170(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x168(%rbp)
leaq -0x41(%rbp), %rdi
movq %rdi, -0x160(%rbp)
callq 0x3400
movq -0x160(%rbp), %rdx
leaq 0x16b3(%rip), %rsi      # 0x131ef
leaq -0x40(%rbp), %rdi
callq 0x4980
jmp 0x11b47
movq -0x168(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0xac80
movq %rax, -0x188(%rbp)
jmp 0x11b60
movq -0x188(%rbp), %rax
cmpq $0x0, %rax
je 0x11bbc
movq -0x188(%rbp), %rdi
leaq 0xa00d(%rip), %rsi      # 0x1bb88
leaq 0xa016(%rip), %rdx      # 0x1bb98
xorl %eax, %eax
movl %eax, %ecx
callq 0x32e0
movq %rax, -0x190(%rbp)
jmp 0x11bc7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11c32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x3160
jmp 0x11c32
xorl %eax, %eax
movq %rax, -0x190(%rbp)
jmp 0x11bc7
movq -0x190(%rbp), %rax
movq %rax, -0x198(%rbp)
movq %rax, -0x20(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x3160
leaq -0x41(%rbp), %rdi
callq 0x32b0
movq -0x198(%rbp), %rax
cmpq $0x0, %rax
jne 0x11c5a
leaq -0x55(%rbp), %rdi
movq %rdi, -0x1a0(%rbp)
callq 0x3400
movq -0x178(%rbp), %rdi
movq -0x1a0(%rbp), %rdx
leaq 0x1f51(%rip), %rsi      # 0x13b6e
callq 0x4980
jmp 0x11c24
leaq -0x55(%rbp), %rdi
callq 0x32b0
jmp 0x1220c
leaq -0x41(%rbp), %rdi
callq 0x32b0
jmp 0x1221c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x55(%rbp), %rdi
callq 0x32b0
jmp 0x1221c
jmp 0x11c5c
movq -0x180(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3460
movsbl (%rax), %eax
cmpl $0x20, %eax
jne 0x11c8b
movq -0x180(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x1, %edx
callq 0x3090
jmp 0x11c5c
jmp 0x11c8d
movq -0x180(%rbp), %rdi
callq 0x3380
movq -0x180(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
callq 0x3460
movsbl (%rax), %eax
cmpl $0x20, %eax
jne 0x11cda
movq -0x180(%rbp), %rdi
callq 0x3380
movq -0x180(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
movl $0x1, %edx
callq 0x3090
jmp 0x11c8d
movq -0x180(%rbp), %rdi
movl $0x20, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x3340
movq -0x180(%rbp), %rdi
movq %rax, -0x68(%rbp)
callq 0x3380
movq %rax, -0x70(%rbp)
leaq -0x68(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x7f90
movq -0x180(%rbp), %rsi
movq (%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rcx
leaq -0x90(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
callq 0x3270
leaq -0x90(%rbp), %rdi
movl $0x20, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x3340
cmpq $-0x1, %rax
jne 0x11daf
leaq -0x90(%rbp), %rdi
movl $0x2f, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x3340
cmpq $-0x1, %rax
jne 0x11daf
leaq -0x90(%rbp), %rdi
leaq 0x2057(%rip), %rsi      # 0x13dcd
callq 0x5200
testb $0x1, %al
jne 0x11daf
leaq -0x90(%rbp), %rdi
leaq 0x1278(%rip), %rsi      # 0x13005
callq 0x5200
testb $0x1, %al
jne 0x11daf
leaq -0x90(%rbp), %rdi
leaq 0x1260(%rip), %rsi      # 0x13004
callq 0x5200
testb $0x1, %al
jne 0x11daf
jmp 0x11e16
leaq -0x91(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x3400
movq -0x178(%rbp), %rdi
movq -0x1a8(%rbp), %rdx
leaq 0x2e92(%rip), %rsi      # 0x14c69
callq 0x4980
jmp 0x11dde
leaq -0x91(%rbp), %rdi
callq 0x32b0
movl $0x1, -0x98(%rbp)
jmp 0x121f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x91(%rbp), %rdi
callq 0x32b0
jmp 0x121fe
movq -0x180(%rbp), %rdi
movq -0x60(%rbp), %rdx
incq %rdx
xorl %eax, %eax
movl %eax, %esi
callq 0x3090
jmp 0x11e2f
movq -0x20(%rbp), %rax
movups 0x50(%rax), %xmm0
movaps %xmm0, -0xb0(%rbp)
movq -0x20(%rbp), %rax
movups 0x50(%rax), %xmm0
movaps %xmm0, -0xc0(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0xaa90
movq %rax, -0x1b0(%rbp)
jmp 0x11e62
movq -0x1b0(%rbp), %rsi
leaq -0xe0(%rbp), %rdi
callq 0x3d50
jmp 0x11e77
leaq -0xb0(%rbp), %rdi
callq 0xaa90
movq %rax, -0x1b8(%rbp)
jmp 0x11e8c
movq -0x1b8(%rbp), %rsi
leaq -0x100(%rbp), %rdi
callq 0x3d50
jmp 0x11ea1
leaq -0xe0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x3470
movq %rax, -0x1c0(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x3160
leaq -0xe0(%rbp), %rdi
callq 0x3160
movq -0x1c0(%rbp), %rax
cmpq $0x0, %rax
je 0x11f7d
leaq -0x101(%rbp), %rdi
movq %rdi, -0x1c8(%rbp)
callq 0x3400
movq -0x178(%rbp), %rdi
movq -0x1c8(%rbp), %rdx
leaq 0x2d9f(%rip), %rsi      # 0x14caf
callq 0x4980
jmp 0x11f17
leaq -0x101(%rbp), %rdi
callq 0x32b0
movl $0x1, -0x98(%rbp)
jmp 0x121f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x121fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x3160
jmp 0x121fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x101(%rbp), %rdi
callq 0x32b0
jmp 0x121fe
movb $0x1, -0x102(%rbp)
movb -0x102(%rbp), %cl
movb $0x0, -0x129(%rbp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x1c9(%rbp)
je 0x11fe3
leaq -0x128(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x30f0
jmp 0x11fb3
movb $0x1, -0x129(%rbp)
leaq -0xb0(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0xa780
movb %al, -0x1ca(%rbp)
jmp 0x11fd5
movb -0x1ca(%rbp), %al
movb %al, -0x1c9(%rbp)
jmp 0x11fe3
movb -0x1c9(%rbp), %al
andb $0x1, %al
movb %al, -0x102(%rbp)
testb $0x1, -0x129(%rbp)
jne 0x11ffc
jmp 0x12008
leaq -0x128(%rbp), %rdi
callq 0x3160
movb -0x102(%rbp), %cl
movb $0x0, -0x151(%rbp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x1cb(%rbp)
je 0x12067
movq -0x180(%rbp), %rsi
leaq -0x150(%rbp), %rdi
callq 0x30f0
jmp 0x12037
movb $0x1, -0x151(%rbp)
leaq -0xc0(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0xa780
movb %al, -0x1cc(%rbp)
jmp 0x12059
movb -0x1cc(%rbp), %al
movb %al, -0x1cb(%rbp)
jmp 0x12067
movb -0x1cb(%rbp), %al
andb $0x1, %al
movb %al, -0x102(%rbp)
testb $0x1, -0x151(%rbp)
jne 0x12080
jmp 0x1208c
leaq -0x150(%rbp), %rdi
callq 0x3160
testb $0x1, -0x102(%rbp)
jne 0x12150
leaq -0x152(%rbp), %rdi
movq %rdi, -0x1d8(%rbp)
callq 0x3400
movq -0x178(%rbp), %rdi
movq -0x1d8(%rbp), %rdx
leaq 0x2c34(%rip), %rsi      # 0x14cf5
callq 0x4980
jmp 0x120c8
leaq -0x152(%rbp), %rdi
callq 0x32b0
movl $0x1, -0x98(%rbp)
jmp 0x121f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
testb $0x1, -0x129(%rbp)
jne 0x120fa
jmp 0x12106
leaq -0x128(%rbp), %rdi
callq 0x3160
jmp 0x121fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
testb $0x1, -0x151(%rbp)
jne 0x12122
jmp 0x1212e
leaq -0x150(%rbp), %rdi
callq 0x3160
jmp 0x121fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x152(%rbp), %rdi
callq 0x32b0
jmp 0x121fe
leaq -0xb0(%rbp), %rdi
callq 0xaa90
movq %rax, -0x1e0(%rbp)
jmp 0x12165
leaq -0xc0(%rbp), %rdi
callq 0xaa90
movq %rax, -0x1e8(%rbp)
jmp 0x1217a
movq -0x1e8(%rbp), %rsi
movq -0x1e0(%rbp), %rdi
callq 0x42e0
jmp 0x1218f
leaq -0x153(%rbp), %rdi
movq %rdi, -0x1f0(%rbp)
callq 0x3400
movq -0x178(%rbp), %rdi
movq -0x1f0(%rbp), %rdx
leaq 0x1c16(%rip), %rsi      # 0x13dcd
callq 0x4980
jmp 0x121be
leaq -0x153(%rbp), %rdi
callq 0x32b0
movl $0x1, -0x98(%rbp)
jmp 0x121f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x153(%rbp), %rdi
callq 0x32b0
jmp 0x121fe
leaq -0x90(%rbp), %rdi
callq 0x3160
jmp 0x1220c
leaq -0x90(%rbp), %rdi
callq 0x3160
jmp 0x1221c
movq -0x170(%rbp), %rax
addq $0x1f0, %rsp            # imm = 0x1F0
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x33f0