Function at 0x402d50
Capabilities:
Create process on windows
Get common file path
Read .ini file

Disassembly:
sub esp, 0x704
push ebx
push esi
mov esi, dword [esp + 0x718]
push edi
push ebp
cmp byte [esi], 0
je 0x4031e5
push esi
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0x407e40
call ebx
push 0x407e40
call fcn.004021c0
add esp, 4
test eax, eax
jne 0x402da2
push 0x10
push str.EXIT
push str.Not_Found_UNINST.INI
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x403265
push 0x407e40
push 0x407f48
call ebx
push 0x407f48
call fcn.00402150
mov edi, dword [esp + 0x71c]
add esp, 4
mov byte [0x407d38], 0
push 0x407e40
mov dword [0x4060d0], edi
push 0x104
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x407d38
push 0x406060
push str.RESOURCE
push str.CONTROL
call ebp
test eax, eax
je 0x402e13
push 0x407d38
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x4060d0], eax
test eax, eax
jne 0x402e13
mov dword [0x4060d0], edi
mov byte [0x407c30], 0
push 0x407e40
push 0x104
push 0x407c30
push 0x406060
push str.PLUGINS
push str.CONTROL
call ebp
test eax, eax
je 0x402e4b
push 0x407c30
call fcn.00401dc0
add esp, 4
push 0x407e40
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push 0
push str.RESTART
push str.CONTROL
call ebp
push 0x407e40
mov dword [0x4060d4], eax
push 0
push str.HIDE
push str.CONTROL
call ebp
push 0x407e40
mov dword [0x4060e0], eax
push 0
push str.AllUser
push str.CONTROL
call ebp
mov dword [0x4060e4], eax
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
cmp dword [0x4060e4], 0
je 0x402f04
push 0
call fcn.00402b10
add esp, 4
test eax, eax
jne 0x402f04
lea eax, [esp + 0x410]
push 0x104
push eax
mov ecx, dword [0x4060d0]
push 1
mov esi, dword [sym.imp.USER32.dll_LoadStringA]
push ecx
call esi
lea ecx, [esp + 0x10]
push 0x200
push ecx
mov eax, dword [0x4060d0]
push 2
push eax
call esi
lea ecx, [esp + 0x410]
push 0x10
lea edx, [esp + 0x14]
push ecx
push edx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x403265
push 0x104
push 0x4060e8
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
push 0x104
push 0x4061f0
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
push 0x4062f8
push 0
call fcn.00402710
add esp, 8
push 0x406400
push 0
call fcn.00402780
add esp, 8
push 0x406508
push 0
call fcn.004027f0
add esp, 8
push 0x406610
push 0
call fcn.00402860
add esp, 8
push 0x406718
push 0
call fcn.00402a20
add esp, 8
call fcn.004011c0
test eax, eax
jne 0x402fa3
cmp byte [0x407c30], 0
je 0x402f86
call fcn.00401e10
cmp edi, dword [0x4060d0]
je 0x403265
mov eax, dword [0x4060d0]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x403265
call fcn.00401e50
call fcn.00401a00
call fcn.00401eb0
call fcn.00401bd0
cmp byte [0x407c30], 0
je 0x402fd2
call fcn.00401e10
push 0x407c30
call fcn.00401ed0
add esp, 4
cmp byte [0x407d38], 0
je 0x402ffe
cmp edi, dword [0x4060d0]
je 0x402ff1
mov eax, dword [0x4060d0]
mov ebp, dword [sym.imp.KERNEL32.dll_FreeLibrary]
push eax
call ebp
push 0x407d38
call fcn.00401ed0
add esp, 4
call fcn.00401c00
push 0x407e40
call fcn.00401ed0
add esp, 4
push 0x407f48
call fcn.004024e0
add esp, 4
cmp byte [esi], 0
jne 0x4031db
call dword [sym.imp.KERNEL32.dll_GetVersion]
and eax, 0x80000000
cmp eax, 1
sbb eax, eax
neg eax
test eax, eax
je 0x4030f8
lea eax, [esp + 0x10]
mov ebp, dword [sym.imp.KERNEL32.dll_GetTempPathA]
push eax
push 0x200
call ebp
lea ecx, [esp + 0x10]
mov ebp, dword [sym.imp.KERNEL32.dll_lstrlenA]
push ecx
call ebp
mov al, byte [esp + eax + 0xf]
cmp al, 0x5c
je 0x40307f
cmp al, 0x2f
je 0x40307f
lea eax, [esp + 0x10]
push 0x4068b4
push eax
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatA]
call esi
jmp 0x403085
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [esp + 0x10]
push str.UNINSTALL.EXE
push eax
call esi
lea eax, [esp + 0x10]
push eax
push 0x44d
push edi
call fcn.00402650
add esp, 0xc
test eax, eax
jne 0x403137
lea eax, [esp + 0x10]
push 0x4060e8
push eax
call ebx
lea eax, [esp + 0x10]
push eax
call ebp
mov al, byte [esp + eax + 0xf]
cmp al, 0x5c
je 0x4030d7
cmp al, 0x2f
je 0x4030d7
lea eax, [esp + 0x10]
push 0x4068b4
push eax
call esi
lea eax, [esp + 0x10]
push str.UNINSTALL.EXE
push eax
call esi
lea eax, [esp + 0x10]
push eax
push 0x44d
push edi
call fcn.00402650
add esp, 0xc
jmp 0x40312f
lea eax, [esp + 0x10]
push 0x407f48
push eax
call ebx
lea eax, [esp + 0x10]
push str.UNINST16.EXE
push eax
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatA]
call esi
lea ecx, [esp + 0x10]
push ecx
push 0x44c
push edi
call fcn.00402650
add esp, 0xc
mov ebp, dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
je 0x4031db
lea eax, [esp + 0x514]
push 0x200
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [esp + 0x210]
push 0x200
lea eax, [esp + 0x518]
push ecx
push eax
mov edi, dword [sym.imp.KERNEL32.dll_GetShortPathNameA]
call edi
lea ecx, [esp + 0x210]
push 0x406968
push ecx
call esi
lea eax, [esp + 0x514]
push 0x200
push eax
push 0x407f48
call edi
lea eax, [esp + 0x210]
push 0x407f48
push eax
call esi
lea eax, [esp + 0x210]
push eax
call ebp
lea eax, [esp + eax + 0x20f]
cmp byte [eax], 0x5c
jne 0x4031b3
mov byte [eax], 0
lea eax, [esp + 0x10]
push 0x406954
push eax
call esi
lea eax, [esp + 0x210]
lea ecx, [esp + 0x10]
push eax
push ecx
call esi
lea ecx, [esp + 0x10]
push 5
push ecx
call dword [sym.imp.KERNEL32.dll_WinExec]
mov eax, 1
jmp 0x403267
push 0x104
push 0x407f48
call fcn.00402180
add esp, 8
push 0x104
push 0x407e40
call fcn.00402180
add esp, 8
push str.UNINST.INI
push 0x407e40
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0x407e40
call fcn.004021c0
add esp, 4
test eax, eax
jne 0x403240
push 0x10
push str.EXIT
push str.Not_Found_UNINST.INI
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x403265
push 0x104
push 0x4060e8
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
mov edi, dword [esp + 0x718]
push 0x407e40
push edi
call fcn.00402c10
add esp, 8
xor eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x704
ret 0x10