Function at 0x41a7b0
Capabilities:
Check if file exists
Delete file
Enumerate files on windows
Get common file path
Move file
Query environment variable
Set file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xebc
mov eax, dword [0x47f060]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov dword [ebp - 0xeb4], eax
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x620], ax
lea eax, [ebp - 0x61e]
push eax
mov dword [ebp - 0xebc], ebx
call sub.MSVCR110.dll_memset
lea ecx, [ebp - 0x620]
mov esi, ebx
mov eax, ecx
add esp, 0xc
mov edx, 0x104
sub esi, eax
jmp 0x41a810
lea eax, [edx + 0x7ffffefa]
test eax, eax
je 0x41a82e
movzx eax, word [esi + ecx]
test ax, ax
je 0x41a82e
mov word [ecx], ax
add ecx, 2
dec edx
jne 0x41a810
jmp 0x41a832
test edx, edx
jne 0x41a835
sub ecx, 2
xor eax, eax
mov word [ecx], ax
push ecx
lea ecx, [ebp - 0x620]
call fcn.0041a450
lea eax, [ebp - 0xeb0]
push eax
lea eax, [ebp - 0x620]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0xeb8], eax
cmp eax, 0xffffffff
jne 0x41a881
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
xor al, al
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00452076
mov esp, ebp
pop ebp
ret 8
lea ecx, [ebp - 0xeb0]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
je 0x41abb6
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, dword [sym.imp.isafepxy.dll_ISAFE_WriteProgramLogNoMask]
mov esi, dword [sym.imp.KERNEL32.dll_MoveFileExW]
lea esp, [esp]
test byte [ebp - 0xeb0], 0x10
jne 0x41ab9b
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x210], ax
lea eax, [ebp - 0x20e]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
lea eax, [ebp - 0xe84]
push eax
push dword [ebp - 0xebc]
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
mov ecx, dword [ebp - 0xeb4]
mov eax, 0x45f878
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x41a926
test dx, dx
je 0x41a922
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x41a926
add eax, 4
add ecx, 4
test dx, dx
jne 0x41a900
xor eax, eax
jmp 0x41a92b
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x210]
push eax
jne 0x41a963
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
test eax, eax
jne 0x41ab9b
call ebx
push eax
lea eax, [ebp - 0x210]
push eax
push str.CUninstalltools::DeleteFileAsType__DeleteFile_failed:_path___s__err___d_
call edi
add esp, 0xc
lea eax, [ebp - 0x210]
jmp 0x41ab94
call dword [sym.imp.SHLWAPI.dll_PathFindExtensionW]
push dword [ebp - 0xeb4]
push eax
call dword [sym.imp.MSVCR110.dll__wcsicmp]
add esp, 8
test eax, eax
jne 0x41ab9b
mov eax, dword [0x483128]
test al, 1
jne 0x41a99f
or eax, 1
push 0x45aee0
mov dword [0x483128], eax
call fcn.004521b7
add esp, 4
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x41a9ff
lea eax, [ebp - 0xc5c]
push eax
push 0
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesExW]
test eax, eax
je 0x41a9ea
mov eax, dword [ebp - 0xc5c]
and eax, 0xffffff7f
test al, 1
je 0x41a9ea
xor eax, 1
push eax
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
test eax, eax
jne 0x41ab9b
call ebx
push eax
lea eax, [ebp - 0x210]
push eax
push str.CUninstalltools::DeleteFileAsType__ForceRemoveFile_failed:_path___s__err___d_
call edi
add esp, 0xc
lea eax, [ebp - 0xc38]
push 0x104
push eax
push str.TEMP
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
lea eax, [ebp - 0x210]
push eax
call fcn.0041bfb0
test al, al
jne 0x41ab3a
push str.CUninstalltools::DeleteFileAsType__IsFileInSystemDrive:_return_false_
call edi
add esp, 4
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x828], ax
lea eax, [ebp - 0x826]
push eax
call sub.MSVCR110.dll_memset
add esp, 8
lea eax, [ebp - 0x210]
push eax
push ecx
mov edx, 0x82
lea ecx, [ebp - 0x828]
call fcn.00406e00
lea eax, [ebp - 0x828]
push eax
call dword [sym.imp.SHLWAPI.dll_PathStripToRootW]
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x418], ax
lea eax, [ebp - 0x416]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
lea eax, [ebp - 0x828]
push str.TEMP
push eax
lea eax, [ebp - 0x418]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
lea eax, [ebp - 0x418]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x41ab01
call fcn.004050a0
lea ecx, [ebp - 0x418]
call fcn.004442d0
lea eax, [ebp - 0x418]
push eax
push str.CUninstalltools::DeleteFileAsType__MakeSureDirPathExist:_path___s_
call edi
add esp, 8
lea eax, [ebp - 0x418]
push 4
push 0
push eax
call esi
lea eax, [ebp - 0x418]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x41ab3a
push 0x208
lea eax, [ebp - 0xc38]
push 0
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
lea eax, [ebp - 0x418]
push eax
lea ecx, [ebp - 0xc38]
call fcn.0041a400
lea eax, [ebp - 0xa30]
push eax
push 0
push 0x462da8
lea eax, [ebp - 0xc38]
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
push 3
lea eax, [ebp - 0xa30]
push eax
lea eax, [ebp - 0x210]
push eax
call esi
test eax, eax
jne 0x41ab8e
call ebx
push eax
lea eax, [ebp - 0xa30]
push eax
lea eax, [ebp - 0x210]
push eax
push str.CUninstalltools::DeleteFileAsType__MoveFileEx_failed:_src___s__dst___s__err___d_
call edi
add esp, 0x10
lea eax, [ebp - 0x210]
jmp 0x41ab94
lea eax, [ebp - 0xa30]
push 4
push 0
push eax
call esi
lea eax, [ebp - 0xeb0]
push eax
push dword [ebp - 0xeb8]
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x41a8b0
push dword [ebp - 0xeb8]
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
mov al, 1
pop ebx
call fcn.00452076
mov esp, ebp
pop ebp
ret 8