Function at 0x40b700
Capabilities:
Check if file exists
Delete file
Query environment variable

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4b9920
mov eax, dword fs:[0]
push eax
push ecx
sub esp, 0x89c
mov eax, dword [0x4f62a0]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
mov dword [ebp - 4], 0
call fcn.0040bd10
mov ecx, eax
call fcn.004173c0
push str.GamePlusPlusInterInstallMutex
call fcn.0040bd10
mov ecx, eax
call fcn.004159a0
test eax, eax
jne 0x40b769
xor eax, eax
jmp 0x40bcca
push str.PcaSvc
call fcn.0040bd10
mov ecx, eax
call fcn.004150d0
call fcn.0040bd60
mov dword [ebp - 0x148], eax
lea eax, [ebp - 0x13c]
push eax
call fcn.0040bd10
mov ecx, eax
call fcn.00416fe0
lea ecx, [ebp - 0x13c]
call fcn.0040bcf0
movzx ecx, al
test ecx, ecx
jne 0x40b7c2
lea ecx, [ebp - 0x13c]
call fcn.00402bd0
push eax
call fcn.0040bd10
mov ecx, eax
call fcn.00416f50
call fcn.0040bd10
mov ecx, eax
call fcn.004152b0
mov edx, dword [ebp + 0x10]
push edx
call fcn.0040bd10
mov ecx, eax
call fcn.004159e0
call fcn.0040bd10
mov ecx, eax
call fcn.00415b10
call fcn.0040bd10
mov ecx, eax
call fcn.00415440
push 0
push 0
push 0
push 0xffff
call dword [sym.imp.USER32.dll_PostMessageW]
call fcn.0040bd10
mov ecx, eax
call fcn.00416670
call fcn.0040bd10
mov ecx, eax
call fcn.00416910
lea eax, [ebp - 0x140]
push eax
mov ecx, dword [ebp - 0x148]
call fcn.00409340
lea ecx, [ebp - 0x140]
call fcn.00407c50
movzx ecx, al
test ecx, ecx
jne 0x40b8b0
lea ecx, [ebp - 0x140]
call sym.Setup.exe_public:_wchar_t_const____thiscall_DuiLib::CDuiString::operator_wchar_t_const__void_const
push eax
lea ecx, [ebp - 0x120]
call fcn.0040bdb0
mov ecx, eax
call sym.Setup.exe_public:_wchar_t_const____thiscall_DuiLib::CDuiString::operator_wchar_t_const__void_const
push eax
push 1
push str.FILE
push 0x8d
call fcn.0040bd10
mov ecx, eax
call fcn.00415630
lea ecx, [ebp - 0x120]
call fcn.0040fde0
mov dword [ebp - 0x88c], 0
lea ecx, [ebp - 0x140]
call fcn.00405d40
lea ecx, [ebp - 0x13c]
call fcn.00402b30
mov eax, dword [ebp - 0x88c]
jmp 0x40bcca
mov ecx, dword [ebp - 0x148]
call fcn.00409030
test eax, eax
jne 0x40b8d7
push 0x409
push 0
push str.TGPPMainForm
call fcn.0040bd10
mov ecx, eax
call fcn.00415950
xor edx, edx
mov word [ebp - 0x350], dx
push 0x206
push 0
lea eax, [ebp - 0x34e]
push eax
call fcn.0042efe0
add esp, 0xc
push 0x104
lea ecx, [ebp - 0x350]
push ecx
push str._appdata_GamePP
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
lea edx, [ebp - 0x350]
push edx
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectory]
push 0x26
call fcn.0040bd10
add eax, 0x820
push eax
call fcn.0040bd10
mov ecx, eax
call fcn.00413080
call fcn.0040bd10
add eax, 0x81e
mov dword [ebp - 0x890], eax
mov eax, dword [ebp - 0x890]
mov cx, word [eax + 2]
mov word [ebp - 0x892], cx
add dword [ebp - 0x890], 2
cmp word [ebp - 0x892], 0
jne 0x40b945
mov edi, dword [ebp - 0x890]
mov edx, dword [0x4d1640]
mov dword [edi], edx
call fcn.0040bd10
add eax, 0x81e
mov dword [ebp - 0x898], eax
mov eax, dword [ebp - 0x898]
mov cx, word [eax + 2]
mov word [ebp - 0x89a], cx
add dword [ebp - 0x898], 2
cmp word [ebp - 0x89a], 0
jne 0x40b985
mov edi, dword [ebp - 0x898]
mov edx, dword [0x4d1644]
mov dword [edi], edx
mov eax, dword [str.mePP2]
mov dword [edi + 4], eax
mov ecx, dword [0x4d164c]
mov dword [edi + 8], ecx
mov edx, dword [0x4d1650]
mov dword [edi + 0xc], edx
mov ecx, dword [ebp - 0x148]
call fcn.00409030
test eax, eax
jne 0x40b9fa
push str.silent
call fcn.0040bd10
add eax, 0xe38
push eax
call fcn.00426522
add esp, 8
test eax, eax
jne 0x40ba15
lea ecx, [ebp - 0x351]
call fcn.004104b0
lea ecx, [ebp - 0x351]
call sym.Setup.exe_public_virtual:_void___thiscall_DuiLib::CComboUI::DoInit_void_
jmp 0x40bb81
call fcn.0040bd10
mov ecx, eax
call fcn.004130e0
test eax, eax
je 0x40bb6d
mov eax, dword [ebp + 8]
push eax
call sym.Setup.exe_public:_static_void___cdecl_DuiLib::CPaintManagerUI::SetInstance_struct_HINSTANCE____
add esp, 4
lea ecx, [ebp - 0x888]
call fcn.0040c0d0
push 0
push 0
push SysReAllocString
push SysReAllocString
push SysReAllocString
push SysReAllocString
push 0x60000
push 0x10cf0000
push 0x4d1664
push 0
lea ecx, [ebp - 0x888]
call fcn.0040c440
test eax, eax
je 0x40ba97
lea ecx, [ebp - 0x888]
call sym.Setup.exe_public:_void___thiscall_DuiLib::CWindowWnd::CenterWindow_void_
push 1
lea ecx, [ebp - 0x888]
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, [ebp - 0x438]
mov dword [ebp - 0x8a0], ecx
mov edx, dword [ebp - 0x8a0]
add edx, 2
mov dword [ebp - 0x8a4], edx
mov eax, dword [ebp - 0x8a0]
mov cx, word [eax]
mov word [ebp - 0x8a6], cx
add dword [ebp - 0x8a0], 2
cmp word [ebp - 0x8a6], 0
jne 0x40babc
mov edx, dword [ebp - 0x8a0]
sub edx, dword [ebp - 0x8a4]
sar edx, 1
mov dword [ebp - 0x8ac], edx
je 0x40bb2f
lea eax, [ebp - 0x438]
push eax
call fcn.0040bd10
add eax, 0x1450
push eax
call fcn.0040bd10
mov ecx, eax
call fcn.00414f90
test eax, eax
jne 0x40bb23
push 1
push 0xb
call fcn.0041ac20
add esp, 8
jmp 0x40bb2f
push 1
push 0xe
call fcn.0041ac20
add esp, 8
movzx ecx, byte [ebp - 0x410]
test ecx, ecx
je 0x40bb48
push 1
push 0xc
call fcn.0041ac20
add esp, 8
jmp 0x40bb54
push 1
push 0xd
call fcn.0041ac20
add esp, 8
push 1
push 1
call fcn.0041ac20
add esp, 8
lea ecx, [ebp - 0x888]
call fcn.0040c370
jmp 0x40bb81
push 0x10
push str.GamePP
push str.Dont_Support_Window_XP_
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
push str.MessageLoop_End.
push 0x4d16e8
push 0x89
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push eax
push 0x4d16fc
push 1
mov edx, dword [0x4fb18c]
push edx
call fcn.00406b40
add esp, 0x1c
call fcn.0040bd10
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
call fcn.0040bd10
movzx eax, byte [eax + 0x1e7c]
test eax, eax
je 0x40bbe0
call fcn.0040bd10
add eax, 0x208
push eax
call fcn.0040bd10
mov ecx, eax
call fcn.00416d00
lea ecx, [ebp - 0x144]
call fcn.00405ce0
call fcn.0040bd10
add eax, 0x1450
push eax
call fcn.0040bd10
add eax, 0x410
push eax
push str._s_s_remove.dat
lea ecx, [ebp - 0x144]
push ecx
call fcn.004068d0
add esp, 0x10
lea ecx, [ebp - 0x144]
call sym.Setup.exe_public:_wchar_t_const____thiscall_DuiLib::CDuiString::operator_wchar_t_const__void_const
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x40bc3d
lea ecx, [ebp - 0x144]
call sym.Setup.exe_public:_wchar_t_const____thiscall_DuiLib::CDuiString::operator_wchar_t_const__void_const
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push str.Clear_Files.
push str.wWinMain
push 0x97
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push eax
push str.Install.cpp
push 1
mov edx, dword [0x4fb18c]
push edx
call fcn.00406b40
add esp, 0x1c
call fcn.0040bd10
add eax, 0x1860
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
call fcn.0040bd10
add eax, 0x1a68
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea ecx, [ebp - 0x144]
call fcn.00405d40
lea ecx, [ebp - 0x140]
call fcn.00405d40
lea ecx, [ebp - 0x13c]
call fcn.00402b30
jmp 0x40bcbb
mov dword [ebp - 4], 0xffffffff
call dword [sym.imp.ole32.dll_CoUninitialize]
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00425912
mov esp, ebp
pop ebp
ret 0x10