Function at 0x401928
Capabilities:
Check if file exists
Create process on windows
Delete directory
Delete file
Get common file path
Get file attributes
Move file
Query environment variable
Set current directory
Set file attributes

Disassembly:
push ebp
mov ebp, esp
push eax
mov eax, 3
add esp, 0xfffff004
push eax
dec eax
jne 0x401931
add esp, 0xfffff6d8
mov eax, dword [ebp - 4]
lea eax, [ebp - 0x410]
push ebx
push esi
push edi
push 0x400
push eax
push 0
lea edi, [ebp - 0x1cd8]
mov esi, str.uninstall.lng
call sub.KERNEL32.DLL_GetModuleFileNameA
lea edx, [ebp - 0x410]
push edx
lea ecx, [ebp - 0x810]
push ecx
call fcn.004076a8
add esp, 8
push 0x5c
lea eax, [ebp - 0x810]
push eax
call fcn.00407779
add esp, 8
test eax, eax
je 0x401f51
lea edx, [ebp - 0x810]
cmp eax, edx
jbe 0x4019ae
xor ecx, ecx
mov cl, byte [eax - 1]
cmp ecx, 0x3a
jne 0x4019ae
mov byte [eax + 1], 0
jmp 0x4019b1
mov byte [eax], 0
lea eax, [ebp - 0x810]
push eax
call sub.KERNEL32.DLL_SetCurrentDirectoryA
lea eax, [ebp - 0x810]
call fcn.00404cf0
cmp byte [0x410148], 0
jne 0x4019fc
push 0x10024
mov eax, 0x13f0
call fcn.004056ac
push eax
mov eax, 0x13f3
call fcn.004056ac
push eax
push 0
call sub.USER32.DLL_MessageBoxA
cmp eax, 6
jne 0x401f51
lea edx, [esi + 0x17d]
push edx
lea ecx, [esi + 0x16f]
push ecx
call fcn.00409040
add esp, 8
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jne 0x401a5f
lea eax, [esi + 0x16f]
push eax
mov eax, 0x13f4
call fcn.004056ac
push eax
lea edx, [ebp - 0x8d8]
push edx
call fcn.004099ac
add esp, 0xc
mov eax, 0x13f0
push 0x10010
call fcn.004056ac
push eax
lea edx, [ebp - 0x8d8]
push edx
push 0
call sub.USER32.DLL_MessageBoxA
jmp 0x401f51
call fcn.00401f58
mov eax, 0x416595
call fcn.00405688
xor ebx, ebx
push 0
push dword [ebx*4 + 0x41014c]
call sub.KERNEL32.DLL_SetFileAttributesA
push dword [ebx*4 + 0x41014c]
call sub.KERNEL32.DLL_DeleteFileA
inc ebx
cmp ebx, 2
jl 0x401a70
mov byte [ebp - 5], 0
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x401c66
lea eax, [ebp - 0x10d8]
call fcn.00404b98
cmp byte [ebp - 0x10d8], 0
je 0x401c66
lea edx, [ebp - 0x10d8]
push edx
lea ecx, [ebp - 0x810]
push ecx
lea eax, [esi + 0x196]
push eax
lea edx, [ebp - 0x14d8]
push edx
call fcn.004099ac
add esp, 0x10
lea ecx, [ebp - 0x14d8]
push ecx
call sub.KERNEL32.DLL_GetFileAttributesA
mov ebx, eax
push 0
lea eax, [ebp - 0x14d8]
push eax
call sub.KERNEL32.DLL_SetFileAttributesA
cmp ebx, 0xffffffff
je 0x401b14
test bl, 0x10
je 0x401b14
lea edx, [ebp - 0x14d8]
push edx
call sub.KERNEL32.DLL_RemoveDirectoryA
add dword [ebp - 0xc], eax
jmp 0x401c66
lea ecx, [ebp - 0x14d8]
push ecx
call sub.KERNEL32.DLL_DeleteFileA
add dword [ebp - 0xc], eax
test eax, eax
jne 0x401c66
cmp ebx, 0xffffffff
je 0x401c66
push 0x400
lea eax, [ebp - 0x18d8]
push eax
push 0
call sub.KERNEL32.DLL_GetModuleFileNameA
lea eax, [ebp - 0x14d8]
call fcn.00404c00
mov ebx, eax
lea eax, [ebp - 0x18d8]
call fcn.00404c00
mov edx, eax
mov eax, ebx
call fcn.00404b74
test eax, eax
je 0x401c66
lea edx, [esi + 0x16f]
mov eax, ebx
call fcn.00404b74
test eax, eax
je 0x401c66
xor ebx, ebx
push ebx
lea eax, [ebp - 0x14d8]
push eax
lea edx, [esi + 0x19b]
push edx
push edi
call fcn.004099ac
add esp, 0x10
push edi
call sub.KERNEL32.DLL_GetFileAttributesA
cmp eax, 0xffffffff
je 0x401bb3
inc ebx
cmp ebx, 0x3e8
jl 0x401b87
push edi
lea ecx, [ebp - 0x14d8]
push ecx
call sub.KERNEL32.DLL_MoveFileA
test eax, eax
jne 0x401bd8
lea eax, [ebp - 0x14d8]
push eax
push edi
call fcn.004076a8
add esp, 8
mov byte [ebp - 5], 1
call fcn.004058c8
test eax, eax
je 0x401bed
push 4
push 0
push edi
call sub.KERNEL32.DLL_MoveFileExA
jmp 0x401c66
push 0x400
lea edx, [ebp - 0x20d8]
push edx
call sub.KERNEL32.DLL_GetWindowsDirectoryA
lea eax, [ebp - 0x20d8]
call fcn.00404cf0
lea edx, [esi + 0x1a5]
push edx
lea ecx, [ebp - 0x20d8]
push ecx
call fcn.004075cc
add esp, 8
lea eax, [ebp - 0x24d8]
push 0x400
push eax
push edi
call sub.KERNEL32.DLL_GetShortPathNameA
test eax, eax
jne 0x401c45
push edi
lea edx, [ebp - 0x24d8]
push edx
call fcn.004076a8
add esp, 8
lea ecx, [ebp - 0x20d8]
push ecx
lea eax, [ebp - 0x24d8]
push eax
lea edx, [esi + 0x1b8]
push edx
lea ecx, [esi + 0x1b1]
push ecx
call sub.KERNEL32.DLL_WritePrivateProfileStringA
push dword [ebp - 4]
push 0x800
lea eax, [ebp - 0x10d8]
push eax
call fcn.00408ce0
add esp, 0xc
test eax, eax
jne 0x401a9e
cmp dword [ebp - 0xc], 0
je 0x401c9f
push 0
push 0
push dword [ebp - 4]
call fcn.004091a4
add esp, 0xc
jmp 0x401a94
push dword [ebp - 4]
call fcn.00408bd0
pop ecx
lea edx, [esi + 0x16f]
push edx
call sub.KERNEL32.DLL_DeleteFileA
cmp byte [ebp - 5], 0
je 0x401cdc
push 0x10040
mov eax, 0x13f0
call fcn.004056ac
push eax
mov eax, 0x13fa
call fcn.004056ac
push eax
push 0
call sub.USER32.DLL_MessageBoxA
lea edx, [ebp - 0x28d8]
push edx
push 0x400
call sub.KERNEL32.DLL_GetTempPathA
lea ecx, [esi + 0x1bc]
push ecx
lea eax, [ebp - 0x28d8]
push eax
call fcn.004075cc
add esp, 8
lea edx, [esi + 0x1ce]
push edx
lea ecx, [ebp - 0x28d8]
push ecx
call fcn.00409040
add esp, 8
mov edi, eax
test edi, edi
je 0x401f51
call fcn.004058c8
test eax, eax
je 0x401d4b
lea eax, [ebp - 0x410]
push eax
lea edx, [esi + 0x1d1]
push edx
lea ecx, [ebp - 0x2cd8]
push ecx
call fcn.004099ac
add esp, 0xc
jmp 0x401d68
lea eax, [ebp - 0x410]
push eax
lea edx, [esi + 0x1de]
push edx
lea ecx, [ebp - 0x2cd8]
push ecx
call fcn.004099ac
add esp, 0xc
push edi
lea eax, [ebp - 0x2cd8]
push eax
call fcn.004076d8
pop ecx
push eax
push 1
lea edx, [ebp - 0x2cd8]
push edx
call fcn.00409288
add esp, 0x10
lea ecx, [ebp - 0x30d8]
push ecx
push 0x400
call sub.KERNEL32.DLL_GetCurrentDirectoryA
lea eax, [ebp - 0x410]
push eax
lea edx, [ebp - 0x30d8]
push edx
lea ecx, [ebp - 0x410]
push ecx
lea eax, [esi + 0x1f7]
push eax
lea edx, [ebp - 0x2cd8]
push edx
call fcn.004099ac
add esp, 0x14
xor ebx, ebx
push edi
lea eax, [ebp - 0x2cd8]
push eax
call fcn.004076d8
pop ecx
push eax
push 1
lea edx, [ebp - 0x2cd8]
push edx
call fcn.00409288
add esp, 0x10
inc ebx
cmp ebx, 5
jl 0x401dc6
lea ecx, [ebp - 0x28d8]
push ecx
lea eax, [ebp - 0x410]
push eax
lea edx, [ebp - 0x410]
push edx
lea ecx, [esi + 0x228]
push ecx
lea eax, [ebp - 0x2cd8]
push eax
call fcn.004099ac
add esp, 0x14
push edi
lea edx, [ebp - 0x2cd8]
push edx
call fcn.004076d8
pop ecx
push eax
push 1
lea ecx, [ebp - 0x2cd8]
push ecx
call fcn.00409288
add esp, 0x10
push edi
call fcn.00408bd0
pop ecx
mov byte [ebp - 0x38d8], 0
push 0x400
lea eax, [ebp - 0x38d8]
push eax
lea edx, [esi + 0x255]
push edx
call sub.KERNEL32.DLL_GetEnvironmentVariableA
lea ecx, [ebp - 0x28d8]
push ecx
lea eax, [ebp - 0x38d8]
push eax
lea edx, [esi + 0x25d]
push edx
lea ecx, [ebp - 0x34d8]
push ecx
call fcn.004099ac
add esp, 0x10
lea eax, [ebp - 0x391c]
push 0x44
push 0
push eax
call fcn.00407528
mov dword [ebp - 0x391c], 0x44
add esp, 0xc
call fcn.004058c8
test eax, eax
je 0x401ebc
mov dword [ebp - 0x38f0], 1
mov word [ebp - 0x38ec], 0
jmp 0x401eff
mov dword [ebp - 0x38f0], 0x100
push 0
push 0
push 2
push 0
push 1
push 0x40000000
lea edx, [esi + 0x1b8]
push edx
call sub.KERNEL32.DLL_CreateFileA
mov dword [ebp - 0x10], eax
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x38e4], ecx
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x38e0], eax
mov edx, dword [ebp - 0x10]
mov dword [ebp - 0x38dc], edx
lea ecx, [esi + 0x268]
push ecx
call sub.KERNEL32.DLL_SetCurrentDirectoryA
lea eax, [ebp - 0x392c]
lea edx, [ebp - 0x391c]
push eax
push edx
push 0
push 0
xor ebx, ebx
call fcn.004058c8
test eax, eax
jne 0x401f2b
add ebx, 8
push ebx
push 1
push 0
lea eax, [ebp - 0x34d8]
push 0
push eax
push 0
call sub.KERNEL32.DLL_CreateProcessA
call fcn.004058c8
test eax, eax
jne 0x401f51
push dword [ebp - 0x10]
call sub.KERNEL32.DLL_CloseHandle
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret