Function at 0x4084c0
Capabilities:
Check mutex on windows
Delete file
Move file
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x828
mov eax, dword [0x5023a4]
xor eax, esp
mov dword [esp + 0x824], eax
mov eax, dword [ebp + 8]
push esi
push edi
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0x10]
push 0
mov dword [esp + 0x28], eax
call dword [sym.imp.ole32.dll_CoInitialize]
cmp dword [0x506568], 0
jne 0x40851a
push 0x20d0
call fcn.0049786c
add esp, 4
mov ecx, eax
call fcn.00414c70
mov ecx, eax
mov dword [0x506568], eax
mov edx, dword [eax]
call dword [edx]
push str.GamePlusPlusInterUninstallMutex
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x408ba7
cmp dword [0x506568], 0
jne 0x408562
push 0x20d0
call fcn.0049786c
add esp, 4
mov ecx, eax
call fcn.00414c70
mov ecx, eax
mov dword [0x506568], eax
mov edx, dword [eax]
call dword [edx]
push 0
push 0x4d9095
lea ecx, [esp + 0x30]
mov dword [esp + 0x30], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0xf
call fcn.00402a10
lea eax, [esp + 0x10]
mov dword [esp + 0x20], 1
push eax
push 1
push 0
xorps xmm0, xmm0
mov dword [esp + 0x28], 0x20
push str.SoftWareGamePP2
push SysReAllocString
movaps xmmword [esp + 0x614], xmm0
movaps xmmword [esp + 0x624], xmm0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4085f7
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x604]
push eax
lea eax, [esp + 0x28]
push eax
push 0
push 0x4dd7f4
push dword [esp + 0x24]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push dword [esp + 0x10]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [esp + 0x600]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x408601
sub ecx, edx
lea eax, [esp + 0x600]
push ecx
push eax
lea ecx, [esp + 0x30]
call fcn.00402a10
cmp dword [esp + 0x38], 0
je 0x4086a2
cmp dword [esp + 0x3c], 0x10
lea edi, [esp + 0x28]
cmovae edi, dword [esp + 0x28]
cmp dword [0x506568], 0
jne 0x40865d
push 0x20d0
call fcn.0049786c
add esp, 4
mov ecx, eax
call fcn.00414c70
mov ecx, eax
mov dword [0x506568], eax
mov edx, dword [eax]
call dword [edx]
mov esi, edi
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x408662
lea eax, [esp + 0x14]
sub esi, ecx
push eax
push str.SoftWareGamePP3
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
test eax, eax
jne 0x4086a2
push esi
push edi
push 1
push eax
push 0x4dd7f4
push dword [esp + 0x28]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
push dword [esp + 0x14]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
xor esi, esi
nop word [eax + eax]
cmp dword [0x506568], 0
jne 0x4086d8
push 0x20d0
call fcn.0049786c
add esp, 4
mov ecx, eax
call fcn.00414c70
mov ecx, eax
mov dword [0x506568], eax
mov edx, dword [eax]
call dword [edx]
push str.GamePP.exe
call fcn.004152d0
push 0x64
call edi
cmp dword [0x506568], 0
jne 0x40870e
push 0x20d0
call fcn.0049786c
add esp, 4
mov ecx, eax
call fcn.00414c70
mov ecx, eax
mov dword [0x506568], eax
mov edx, dword [eax]
call dword [edx]
push str.GamePP.exe
call fcn.004153a0
test eax, eax
je 0x408722
inc esi
cmp esi, 0xa
jb 0x4086b0
mov ecx, dword [0x506568]
test ecx, ecx
jne 0x408751
push 0x20d0
call fcn.0049786c
add esp, 4
mov ecx, eax
call fcn.00414c70
mov ecx, eax
mov dword [0x506568], eax
mov edx, dword [eax]
call dword [edx]
mov ecx, dword [0x506568]
push dword [esp + 0x24]
call fcn.00414eb0
cmp dword [0x506568], 0
jne 0x408782
push 0x20d0
call fcn.0049786c
add esp, 4
mov ecx, eax
call fcn.00414c70
mov ecx, eax
mov dword [0x506568], eax
mov edx, dword [eax]
call dword [edx]
mov edi, dword [sym.imp.USER32.dll_FindWindowW]
push 0
push str.TGPPMainForm
call edi
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
test eax, eax
je 0x4087a7
push 0
push 0
push 0x409
push eax
call esi
cmp dword [0x506568], 0
jne 0x4087cf
push 0x20d0
call fcn.0049786c
add esp, 4
mov ecx, eax
call fcn.00414c70
mov ecx, eax
mov dword [0x506568], eax
mov edx, dword [eax]
call dword [edx]
push 0
push str.TMacheNikeMainForm
call edi
test eax, eax
je 0x4087e8
push 0
push 0
push 0x409
push eax
call esi
call fcn.00408bd0
mov ecx, eax
call fcn.00406a40
test eax, eax
jne 0x408a2d
mov eax, dword [0x506568]
test eax, eax
jne 0x408829
push 0x20d0
call fcn.0049786c
add esp, 4
mov ecx, eax
call fcn.00414c70
mov ecx, eax
mov dword [0x506568], eax
mov edx, dword [eax]
call dword [edx]
mov eax, dword [0x506568]
add eax, 0xa2c
push str.silent
push eax
call fcn.004a4268
add esp, 8
test eax, eax
je 0x408a2d
cmp dword [0x506568], 0
jne 0x40886c
push 0x20d0
call fcn.0049786c
add esp, 4
mov ecx, eax
call fcn.00414c70
mov ecx, eax
mov dword [0x506568], eax
mov edx, dword [eax]
call dword [edx]
push str.ntdll.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
je 0x408a14
push str.RtlGetVersion
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x408a14
lea ecx, [esp + 0x620]
push ecx
call eax
cmp dword [esp + 0x624], 6
jb 0x408a14
push dword [esp + 0x18]
call sym.Setup.exe_public:_static_void___cdecl_DuiLib::CPaintManagerUI::SetInstance_struct_HINSTANCE____
add esp, 4
lea ecx, [esp + 0x40]
call fcn.00408c50
push 0
push 0
push SysReAllocString
push SysReAllocString
push SysReAllocString
push SysReAllocString
push 0x60000
push 0x10cf0000
push str.GamePlusPlus
push 0
lea ecx, [esp + 0x68]
call sym.Setup.exe_protected_virtual:_int___thiscall_DuiLib::WindowImplBase::CreateMainFrame_struct_HWND_____wchar_t_const___unsigned_long_int__unsigned_long_int__int__int__int__int__struct_HMENU_____bool_
test eax, eax
je 0x408911
lea ecx, [esp + 0x40]
call sym.Setup.exe_public:_void___thiscall_DuiLib::CWindowWnd::CenterWindow_void_
push 1
lea ecx, [esp + 0x44]
call sym.Setup.exe_public:_struct_HWND______thiscall_DuiLib::CWindowWnd::operator_struct_HWND____void_const
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
call sym.Setup.exe_public:_static_void___cdecl_DuiLib::CPaintManagerUI::MessageLoop_void_
call sym.Setup.exe_public:_static_void___cdecl_DuiLib::CPaintManagerUI::Term_void_
lea ecx, [esp + 0x490]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x408925
sub ecx, edx
sar ecx, 1
je 0x4089b4
mov esi, dword [0x506568]
test esi, esi
jne 0x40898c
push 0x20d0
call fcn.0049786c
add esp, 4
mov ecx, eax
call fcn.00414c70
mov ecx, eax
mov dword [0x506568], eax
mov edx, dword [eax]
call dword [edx]
mov esi, dword [0x506568]
test esi, esi
jne 0x40898c
push 0x20d0
call fcn.0049786c
add esp, 4
mov ecx, eax
call fcn.00414c70
mov ecx, eax
mov dword [0x506568], eax
mov edx, dword [eax]
call dword [edx]
lea eax, [esp + 0x490]
push eax
lea eax, [esi + 0x1044]
push eax
call fcn.004131e0
mov edx, 1
lea ecx, [edx + 0xa]
test eax, eax
je 0x4089af
lea ecx, [edx + 0xd]
call fcn.00419b90
mov ecx, dword [0x506568]
test ecx, ecx
jne 0x4089e3
push 0x20d0
call fcn.0049786c
add esp, 4
mov ecx, eax
call fcn.00414c70
mov ecx, eax
mov dword [0x506568], eax
mov edx, dword [eax]
call dword [edx]
mov ecx, dword [0x506568]
mov ecx, dword [ecx + 0x1ec4]
mov edx, 1
neg ecx
sbb ecx, ecx
add ecx, 0xd
call fcn.00419b90
mov edx, 1
mov ecx, edx
call fcn.00419b90
lea ecx, [esp + 0x40]
call fcn.00409020
jmp 0x408b3b
push 0x10
push 0x4da3b0
push str.Dont_Support_Window_XP_
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x408b3b
mov byte [esp + 0xf], 0
call fcn.0040f6f0
lea ecx, [esp + 0xf]
call fcn.0040fa30
call fcn.004105b0
mov ecx, dword [0x506568]
test ecx, ecx
jne 0x408a74
push 0x20d0
call fcn.0049786c
add esp, 4
mov ecx, eax
call fcn.00414c70
mov ecx, eax
mov dword [0x506568], eax
mov edx, dword [eax]
call dword [edx]
mov ecx, dword [0x506568]
call fcn.004132d0
call fcn.004107d0
cmp dword [0x506570], 0
jne 0x408aa3
push 4
call fcn.0049786c
add esp, 4
mov dword [0x506570], eax
mov ecx, eax
mov dword [eax], vtable.RelativeProduct.0
call sym.Setup.exe_public_virtual:_void___thiscall_DuiLib::WindowImplBase::InitWindow_void_
movzx eax, byte [esp + 0xf]
push 1
push eax
call fcn.00417450
call fcn.00408bd0
cmp dword [0x506568], 0
mov esi, eax
jne 0x408adf
push 0x20d0
call fcn.0049786c
add esp, 4
mov ecx, eax
call fcn.00414c70
mov ecx, eax
mov dword [0x506568], eax
mov edx, dword [eax]
call dword [edx]
mov ecx, esi
call fcn.00406dc0
test eax, eax
je 0x408b2f
push 0x208
lea eax, [esp + 0x624]
push 0
push eax
call fcn.0049b560
add esp, 0xc
lea eax, [esp + 0x620]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push 4
push 0
lea eax, [esp + 0x628]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
mov ecx, 3
jmp 0x408b34
mov ecx, 1
xor edx, edx
call fcn.00419b90
mov ecx, dword [0x506568]
test ecx, ecx
jne 0x408b6a
push 0x20d0
call fcn.0049786c
add esp, 4
mov ecx, eax
call fcn.00414c70
mov ecx, eax
mov dword [0x506568], eax
mov edx, dword [eax]
call dword [edx]
mov ecx, dword [0x506568]
call fcn.00413650
call dword [sym.imp.ole32.dll_CoUninitialize]
mov edx, dword [esp + 0x3c]
cmp edx, 0x10
jb 0x408ba7
mov ecx, dword [esp + 0x28]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x408b9d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x408bbf
push edx
push ecx
call fcn.0049789c
add esp, 8
mov ecx, dword [esp + 0x82c]
xor eax, eax
pop edi
pop esi
xor ecx, esp
call fcn.0049765c
mov esp, ebp
pop ebp
ret 0x10
call fcn.0049e530
int3