Function at 0x4089f0
Capabilities:
Create process on windows
Get common file path
Set registry value
Terminate process

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x41b294
mov eax, dword fs:[0]
push eax
sub esp, 0x740
mov eax, dword [0x42a020]
xor eax, ebp
mov dword [ebp - 0x10], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push 0x41e75c
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
mov dword [ebp - 4], 0
push 0x42aec4
lea ecx, [ebp - 0x2c]
call dword [0x41e158]
push 0
lea eax, [ebp - 0x30]
push eax
push 0
push 0xf003f
push 0
push 0
push 0
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP90.dll_public:_wchar_t_const____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::c_str_void_const]
push eax
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x408c07
lea ecx, [ebp - 0x23c]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
lea edx, [ebp - 0x23c]
push edx
lea ecx, [ebp - 0x744]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
mov dword [ebp - 0x748], eax
mov eax, dword [ebp - 0x748]
mov dword [ebp - 0x74c], eax
mov byte [ebp - 4], 1
push 0x41e798
mov ecx, dword [ebp - 0x74c]
push ecx
lea edx, [ebp - 0x258]
push edx
call dword [sym.imp.MSVCP90.dll_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____cdecl_std::operator_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const___wchar_t_const__]
add esp, 0xc
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x744]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [ebp - 0x258]
call dword [sym.imp.MSVCP90.dll_public:_unsigned_int___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::length_void_const]
lea eax, [eax + eax + 2]
push eax
lea ecx, [ebp - 0x258]
call dword [sym.imp.MSVCP90.dll_public:_wchar_t_const____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::c_str_void_const]
push eax
push 1
push 0
push 0x41e79c
mov ecx, dword [ebp - 0x30]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
test eax, eax
jne 0x408bf2
mov edx, dword [ebp - 0x30]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0x104
lea eax, [ebp - 0x464]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x408bf2
mov dword [ebp - 0x4a0], 0x3c
push 0x38
push 0
lea ecx, [ebp - 0x49c]
push ecx
call sub.MSVCR90.dll_memset
add esp, 0xc
lea edx, [ebp - 0x464]
mov dword [ebp - 0x490], edx
mov eax, dword [0x42ad60]
mov dword [ebp - 0x498], eax
mov dword [ebp - 0x484], 1
mov ecx, dword [0x42ac70]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea edx, [ebp - 0x4a0]
push edx
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
jne 0x408bea
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x4c0], eax
mov eax, dword [ebp - 0x4c0]
lea ecx, [eax*2 + 0x41e7c0]
push ecx
lea ecx, [ebp - 0x4bc]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
mov byte [ebp - 4], 4
push 0
push 0x41e810
lea ecx, [ebp - 0x4bc]
call dword [sym.imp.MSVCP90.dll_public:_wchar_t_const____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::c_str_void_const]
push eax
call fcn.00406350
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x4bc]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
push 0
call dword [sym.imp.MSVCR90.dll_exit]
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x258]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
jmp 0x408cfb
push 0x104
lea edx, [ebp - 0x6cc]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x408cfb
mov dword [ebp - 0x708], 0x3c
push 0x38
push 0
lea eax, [ebp - 0x704]
push eax
call sub.MSVCR90.dll_memset
add esp, 0xc
mov dword [ebp - 0x6fc], 0x41e81c
lea ecx, [ebp - 0x6cc]
mov dword [ebp - 0x6f8], ecx
mov edx, dword [0x42ad60]
mov dword [ebp - 0x700], edx
mov dword [ebp - 0x6ec], 1
mov eax, dword [0x42ac70]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x708]
push ecx
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
jne 0x408cf3
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x70c], eax
cmp dword [ebp - 0x70c], 0x4c7
jne 0x408ca3
jmp 0x408cf1
mov edx, dword [ebp - 0x70c]
lea eax, [edx*2 + str.Error__ShellExecuteEx_failed_with_code]
push eax
lea ecx, [ebp - 0x728]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
mov byte [ebp - 4], 5
push 0
push 0x41e878
lea ecx, [ebp - 0x728]
call dword [sym.imp.MSVCP90.dll_public:_wchar_t_const____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::c_str_void_const]
push eax
call fcn.00406350
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x728]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
jmp 0x408cfb
push 0
call dword [sym.imp.MSVCR90.dll_exit]
mov ecx, dword [ebp - 0x30]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004077d3
mov esp, ebp
pop ebp
ret