Function at 0x4075d1
Capabilities:
Check if file exists
Copy file
Create process on windows
Delete file
Get common file path
Get file attributes
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2e8
mov eax, dword [ebp + 8]
push ebx
push esi
xor esi, esi
mov eax, dword [eax + 0xbc]
push edi
cmp eax, esi
je 0x4078c5
push str.SSAVER
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x4078c5
lea eax, [ebp - 0xe0]
mov dword [ebp - 0xe0], 0x94
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [ebp - 0xdc], 4
jne 0x407653
cmp dword [ebp - 0xd8], esi
jne 0x407653
cmp dword [ebp - 0xd0], 2
jne 0x407653
push esi
push str.WildTangent_Screen_Savers
push str.The_WildTangent_Screen_Savers_are_not_currently_supported_in_Windows_NT_4.0._nThis_installation_will_now_stop._n
push dword [0x42552c]
call dword [sym.imp.USER32.dll_MessageBoxA]
push 9
jmp 0x407848
lea eax, [ebp - 4]
mov ebx, 0x20019
push eax
push ebx
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
push str.SoftwareWildTangentScreenSavers
push 0x80000001
call esi
mov edi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
jne 0x4076b2
lea eax, [ebp - 8]
mov dword [ebp - 8], 0x104
push eax
lea eax, [ebp - 0x1e4]
push eax
lea eax, [ebp - 0xc]
push eax
push 0
push str.Path
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push dword [ebp - 4]
mov dword [ebp - 0x10], eax
call edi
cmp dword [ebp - 0x10], 0
je 0x4077a5
lea eax, [ebp - 4]
push eax
push ebx
push 0
push str.SoftwareMicrosoftWindowsCurrentVersion
push 0x80000002
call esi
xor ebx, ebx
test eax, eax
jne 0x407727
lea eax, [ebp - 8]
mov dword [ebp - 8], 0x104
push eax
lea eax, [ebp - 0x1e4]
push eax
lea eax, [ebp - 0xc]
push eax
push ebx
push str.ProgramFilesDir
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push dword [ebp - 4]
mov esi, eax
call edi
cmp esi, ebx
jne 0x407727
lea eax, [ebp - 0x1e4]
push 0x417f18
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [ebp - 0x1e4]
push ebx
push eax
call fcn.00402868
pop ecx
test eax, eax
pop ecx
jne 0x407759
push 8
jmp 0x407848
mov esi, dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [ebp - 0x1e4]
push str.C:Program_FilesWildTangent_Screen_Savers
push eax
call esi
lea eax, [ebp - 0x1e4]
push eax
push 0x425318
call esi
call fcn.0040cd19
test eax, eax
jne 0x40770d
push 6
jmp 0x407848
lea eax, [ebp - 4]
push ebx
push eax
push ebx
push 2
push ebx
push ebx
push ebx
push str.SoftwareWildTangentScreenSavers
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
jne 0x4077a5
lea eax, [ebp - 0x1e4]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
lea eax, [ebp - 0x1e4]
push eax
push 1
push 0
push str.Path
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
push dword [ebp - 4]
call edi
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x50]
cmp ecx, 0xffffffff
jle 0x4078c5
mov ecx, dword [eax + ecx*4 + 0xf0]
xor edi, edi
inc edi
mov dword [ecx + 8], edi
lea ecx, [ebp - 0x1e4]
push ecx
mov ecx, dword [eax + 0x50]
mov ecx, dword [eax + ecx*4 + 0xf0]
call fcn.00401e00
test eax, eax
je 0x407846
lea eax, [ebp - 0x2e8]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [ebp - 0x2e8]
push str.WildTangent_Screen_Savers.scr
push eax
call esi
lea eax, [ebp - 0x1e4]
push str.wtsaver.scr
push eax
call esi
lea eax, [ebp - 0x1e4]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x4078c5
xor esi, esi
lea eax, [ebp - 0x2e8]
push esi
push eax
lea eax, [ebp - 0x1e4]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
jne 0x40784b
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 5
pop eax
jmp 0x4078c7
lea eax, [ebp - 0x1e4]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
cmp dword [ebp - 0xdc], 4
jne 0x40788a
cmp dword [ebp - 0xd8], esi
jne 0x40788a
cmp dword [ebp - 0xd0], edi
jne 0x40788a
push esi
push str.WildTangent_Screen_Savers_installed
push str.You_have_just_installed_a_screensaver_package_that_works_with_the_nWildTangent_Screensaver.__To_select_a_specific_screensaver__right_click_on_nyour_desktop__select_properties__select_the_Screen_Saver_tab__select_n_WildTangent_Screen_Savers__from_the_list__and_click_on_the_settings_button.
push dword [0x42552c]
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x4078c5
lea eax, [ebp - 0x2e8]
mov dword [ebp - 0x4c], 0x3c
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x4c]
push eax
mov dword [ebp - 0x48], pe_nt_image_headers32
mov dword [ebp - 0x44], esi
mov dword [ebp - 0x40], str.Install
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x30], 0xa
mov dword [ebp - 0x2c], esi
call dword [sym.imp.SHELL32.dll_ShellExecuteExA]
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret