Function at 0x401000
Capabilities:
Extract resource via kernel32 functions
Get common file path
Get file version info

Disassembly:
sub esp, 0x384
push ebx
push esi
push edi
xor esi, esi
mov dword [esp + 0x14], esi
push ebp
mov dword [esp + 0x14], esi
push 0x21
push str.Install
push str.Install_Good_Will_hunting_Screensaver__
push esi
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 1
je 0x401036
mov eax, 1
jmp 0x40131a
lea eax, [esp + 0x128]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea ecx, [esp + 0x128]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
cmp byte [esp + eax + 0x127], 0x5c
je 0x401074
lea eax, [esp + 0x128]
push 0x406168
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [esp + 0x128]
push str.imgdll.dll
lea ecx, [esp + 0x28]
push eax
push str._s_s
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
lea ecx, [esp + 0x28]
lea edx, [esp + 0x34]
add esp, 0x10
push ecx
push edx
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov ebx, eax
test ebx, ebx
je 0x4010fb
push ebx
call fcn.004015a0
add esp, 4
mov edi, eax
lea eax, [esp + 0x24]
push edi
push ebx
push 0
push eax
call sub.VERSION.dll_GetFileVersionInfoA
lea eax, [esp + 0x20]
lea ecx, [esp + 0x1c]
push eax
push ecx
push str.StringFileInfo040904E4ProductVersion
push edi
call sub.VERSION.dll_VerQueryValueA
mov ecx, dword [esp + 0x1c]
push 0x406130
push ecx
call fcn.00404220
add esp, 8
test eax, eax
jl 0x4010f2
mov esi, 1
push edi
call fcn.00401580
add esp, 4
test esi, esi
jne 0x401199
mov esi, dword [esp + 0x398]
push 0x406128
push 0xa
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceA]
push eax
mov ebp, eax
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
push eax
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov dword [esp + 0x10], eax
push 0x406124
lea eax, [esp + 0x28]
push eax
call fcn.00401560
add esp, 8
mov edi, eax
push ebp
push esi
call dword [sym.imp.KERNEL32.dll_SizeofResource]
push edi
push 1
push eax
mov eax, dword [esp + 0x1c]
push eax
call fcn.004013b0
add esp, 0x10
cmp eax, 1
push edi
je 0x401188
call fcn.00401340
add esp, 4
push 0x10
push str.Install
push str.Write_error
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
jmp 0x40131a
call fcn.00401340
add esp, 4
push ebx
call dword [sym.imp.KERNEL32.dll_FreeResource]
jmp 0x4011a0
mov esi, dword [esp + 0x398]
push 0x406128
push 0xb
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceA]
push eax
mov ebp, eax
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
push eax
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_LockResource]
lea ecx, [esp + 0x24]
push str.Good_Will_hunting.scr
mov dword [esp + 0x14], eax
lea eax, [esp + 0x12c]
push eax
push str._s_s
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
lea ecx, [esp + 0x34]
add esp, 0x10
push 0x406114
push ecx
call fcn.00401560
add esp, 8
test eax, eax
je 0x401243
push eax
call fcn.00401340
lea eax, [esp + 0x28]
lea ecx, [esp + 0x230]
add esp, 4
push eax
push str.File_:___s__already_exists____n_nOverwrite_this_file__
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
lea ecx, [esp + 0x238]
add esp, 0xc
push 0x34
push str.Install
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 6
je 0x401243
mov dword [esp + 0x14], 1
cmp dword [esp + 0x14], 0
jne 0x401304
lea eax, [esp + 0x24]
push 0x406124
push eax
call fcn.00401560
add esp, 8
mov edi, eax
push ebp
push esi
call dword [sym.imp.KERNEL32.dll_SizeofResource]
push edi
push 1
push eax
mov eax, dword [esp + 0x1c]
push eax
call fcn.004013b0
add esp, 0x10
cmp eax, 1
push edi
je 0x4012a4
call fcn.00401340
add esp, 4
push 0x10
push str.Install
push str.Write_error
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
jmp 0x40131a
call fcn.00401340
add esp, 4
push ebx
call dword [sym.imp.KERNEL32.dll_FreeResource]
lea eax, [esp + 0x128]
push 0x104
lea ecx, [esp + 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetShortPathNameA]
lea ecx, [esp + 0x128]
push str.system.ini
push ecx
push str.SCRNSAVE.EXE
push str.boot
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 1
push 0
push 1
push 0x11
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
push 0
push str.Install
push str.______Saver_installed
jmp 0x401310
push 0x30
push str.Install
push str.Install_aborted
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x384
ret 0x10