Function at 0x4030e0
Capabilities:
Copy file
Set file attributes

Disassembly:
push 0xffffffffffffffff
push 0x4079bb
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x84
mov eax, dword [esp + 0x9c]
push ebx
push ebp
push esi
mov esi, dword [esp + 0xa4]
push edi
mov ebp, ecx
mov ecx, dword [esp + 0xa4]
push eax
push esi
push ecx
mov ecx, ebp
mov dword [esp + 0x1c], ebp
call section..text
push str.Runs_the_given_file_and_deletes_it._It_also_removes_the_given_key_from_Add_Remove_Program_list
push str.NVU_File__Uninstall_Reg_key
xor ebx, ebx
push 0x404cb0
push str.Uninstall
mov ecx, ebp
mov dword [esp + 0xac], ebx
mov dword [ebp + 0x558], esi
mov byte [ebp + 0x5e4], bl
call fcn.004015b0
push str.Uninstalls_the_given_product_from_add_remove_programs._nIf_it_detects_uninstall_as_its_nvu_it_uses_internal_uninstall_command_otherwise_calls_the_appropriate_uninstall_command.
push str.Uninstall_Display_Reg_key
push 0x404da0
push str.UnInstallEx
mov ecx, ebp
call fcn.004015b0
push str.Adds_Display_name_as_the_title_to_in_Add_Remove_programs_list_and_copies_uninstall_binary_and_script_file_to_windows_system_directory
push str.Uninstall_File___Display_Name
push 0x404e30
push str.AddUninstall
mov ecx, ebp
call fcn.004015b0
push str.Put_the_given_file_for_delete_in_the_next_reboot._nIf_the_file_exists_it_will_ask_user_for_the_reboot_when_program_ends.
push str.Path_to_files_to_be_deleted_on_reboot
push 0x4047e0
push str.DelBoot
mov ecx, ebp
call fcn.004015b0
push str.Deletes_the_given_file_if_it_exists__It_also_deletes_a_directory_if_it_is_empty._If_the_file_is_locked_it_will_set_the_system_to_delete_the_file_upon_reboot
push str.Path_to_file_to_be_deleted
push fcn.00404160
push 0x40bbf0
mov ecx, ebp
call fcn.004015b0
push str.Copies_a_file_from_the_given_source_to_given_dest
push str.Srcfile_DstFile
push 0x4041e0
push str.Copy
mov ecx, ebp
call fcn.004015b0
push str.Deletes_regkey_s__matching_the_given_registry_key
push str.Registry_pattern_matching_string
push 0x404010
push str.DelReg
mov ecx, ebp
call fcn.004015b0
push str.Only_deletes_regkey_s__matching_the_given_registry_key_if_they_have_no_subkeys_or_values
push str.Registry_pattern_matching_string
push 0x404090
push str.DelRegE
mov ecx, ebp
call fcn.004015b0
push str.For_all_the_matching_registry_paths__sets_values_if__value__is_present__creates_subkeys_otherwise
push str.Registry_pattern_matching_stringName_value_
push 0x403e80
push str.SetReg
mov ecx, ebp
call fcn.004015b0
push str.If_it_finds_name_under_regkeypath_copies_its_value_to_the_given_variable__othewise_does_nothing.
push str.Variable__regkeypathName
push 0x405180
push str.GetReg
mov ecx, ebp
call fcn.004015b0
push str.uninstalls_the_given_service_name
push str.Service_Name
push 0x404af0
push str.UninstallService
mov ecx, ebp
call fcn.004015b0
push str.Remove_any_device_matched_with_the_given_description_from_the_system_using_setupdi_calls._nEnum_can_be__PCI__EISA__etc___HWID_usually_is_VEN_10DE_and_device_type_can_be_DISPLAY_HDC_MEDIA_NET_SYSTEM
push str.Enum_Type___Hardware_ID__Device_type
push 0x4062b0
push str.RemoveDevice
mov ecx, ebp
call fcn.004015b0
push str.Installs_the_given_driver_for_any_device_matched_with_the_given_device_ID_from_the_system_using_setupdi_calls.
push str.Hardware_ID__InfFullPath
push 0x405f20
push str.InstallDriverEx
mov ecx, ebp
call fcn.004015b0
push str.Installs_the_given_driver_for_any_device_matched_using_UpdateDriverForPlugAndPlayDevices_for_Win200_and_above_and_InstallDriverEx_for_Win95_and_Win98
push str.Hardware_ID__InfFullPath
push 0x405ae0
push str.InstallDriver
mov ecx, ebp
call fcn.004015b0
push str.This_function_first_creates_a_device_Installs_the_driver_for_this_device_using_given_inf._This_function_should_work_for_all_versions_of_Windows
push str.Hardware_ID__InfFullPath
push 0x405d20
push str.CreateDevice
mov ecx, ebp
call fcn.004015b0
push str.Sets_the_given_variable_to_a_string_representing_the_infs_GUID
push str.Variable_Name__Full_Path_to_Inf
push 0x4059b0
push str.GetInfGUID
mov ecx, ebp
call fcn.004015b0
push str._it_searches_in_all_inf_files_under_sysdirinf_Wildcard_and_OEM.inf__and_if_it_finds_a_match_with_given_parameters_it_deletes_it_on_reboot
push str.WildCard___Section___Name___Value____..._
push 0x4064b0
push str.DelOemInfs
mov ecx, ebp
call fcn.004015b0
push str.it_searches_in_all_inf_files_under_sysdirinfOEM.inf_and_if_it_finds_a_match_with_given_parameters_it_deletes_it_on_reboot
push str.Inffile___Section___Name___Value_____..._
push 0x406390
push str.DelIniIfMatched
mov ecx, ebp
call fcn.004015b0
push str.This_is_a_legacy_command_to_maintain_backward_compatibility.
push str.Void
push 0x406380
push str.UnifyUninst
mov ecx, ebp
call fcn.004015b0
push str.Enumerates_all_keys_matching_the_given_regpath_and_when_matched_calls_the_given_command_Current_Reg_Key_is_set_then_the_given_command_is_executed
push str.RegPathToEnumatrate___Command
push 0x406540
push str.EnumRegCmd
mov ecx, ebp
call fcn.004015b0
push str.Enumerates_all_keys_matching_the_given_regpath_and_when_matched_enumarates_all_names_under_that_key_then_calls_the_given_command_Current_Reg_name_and_Current_Reg_value_are_set_when_the_given_command_is_executed
push str.RegPathToEnumatrate___Command
push 0x4065d0
push str.EnumRegNamesCmd
mov ecx, ebp
call fcn.004015b0
push str.Adds_the_given_name_to_environment_variables_and_sets_its_value
push str.NameValue
push 0x4069d0
push str.SetEnv
mov ecx, ebp
call fcn.004015b0
push str.Displays_the_GUI_to_uninstall_whatever_user_chooses
push 0x40cf58
push 0x407120
push str.UninstallGUI
mov ecx, ebp
call fcn.004015b0
push str.Given_an_appname_enumerates_all_the_running_app_and_kills_its_process_if_it_is_running
push str.AppName
push fcn.004073d0
push str.KillApp
mov ecx, ebp
call fcn.004015b0
push str.Creates_a_shell_link__shortcut_
push str.LnkFile_Title_ProgFile_ProgArgs_ProgWorkingDir
push 0x407410
push str.CreateShortcut
mov ecx, ebp
call fcn.004015b0
push str.It_uses_the_first_char_of_the_path_as_drive_letter_and_assigns_the_port_number_of_that_to_the_given_variable_name.
push str.Variable__path
push 0x407690
push str.GetDrivePort
mov ecx, ebp
call fcn.004015b0
push str.It_enumerats_all_the_devices_present_on_the_system_if_any_device_has_DeviceID_and_is_from_the_given_Class_then_variable_Current_Device_is_set_to_that_device_ID_and_the_given_command_gets_executed.
push str.DeviceId_Class_Cmd
push 0x405fb0
push str.EnumDevices
mov ecx, ebp
call fcn.004015b0
push str.Set_UninstRegKeyHKLMSoftwareMicrosoftWindowsCurrentVersionUninstall
mov ecx, ebp
call fcn.00401e90
push str.Set_NVUninst_RegKeyUninstRegkeyNVIDIA_Drivers
mov ecx, ebp
call fcn.00401e90
push str.Set_NVCompList_RegKeyNVUninst_RegKeySubComponents
mov ecx, ebp
call fcn.00401e90
push 0x40aec8
push str.Install_ITB_Driver
mov ecx, ebp
call fcn.00401780
push str.sysdir
mov ecx, ebp
call fcn.00401670
lea ecx, [ebp + 0x564]
mov dl, byte [eax]
inc eax
mov byte [ecx], dl
inc ecx
test dl, dl
jne 0x403459
lea edx, [ebp + 0x564]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [str.NVUninst.nvu]
dec edi
push edx
push str.Master_Data_File
mov dword [edi], eax
mov ecx, dword [0x40aea8]
mov dword [edi + 4], ecx
mov eax, dword [0x40aeac]
mov dword [edi + 8], eax
mov cx, word [0x40aeb0]
mov word [edi + 0xc], cx
mov ecx, ebp
call fcn.00401780
mov edx, dword [ebp + 0x550]
push 0x80
push 0x40d370
push 1
push edx
call dword [sym.imp.USER32.dll_LoadStringA]
mov ecx, dword [ebp + 0x550]
lea eax, [esp + 0x14]
push 0x80
push eax
push ecx
mov dword [ebp + 0x54c], 0x40d370
mov dword [ebp + 0x558], ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push str.sysdir
mov ecx, ebp
call fcn.00401670
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x14]
repne scasb al, byte es:[edi]
not ecx
dec ecx
push edx
mov esi, ecx
mov ecx, ebp
call fcn.00401db0
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esi + ecx + 2]
push eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
mov ecx, ebp
mov ebx, eax
push str.sysdir
call fcn.00401670
mov esi, ebx
mov cl, byte [eax]
inc eax
mov byte [esi], cl
inc esi
test cl, cl
jne 0x403532
lea ecx, [esp + 0x14]
push ecx
mov ecx, ebp
call fcn.00401db0
mov edi, eax
or ecx, 0xffffffff
dec edi
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x14]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
push ebx
call dword [sym.imp.MSVCRT.dll__mbsicmp]
add esp, 8
test eax, eax
sete al
test al, al
mov byte [ebp + 0x5e5], al
jne 0x4035ca
push 0x10014
push 0x10000
push ebx
mov ecx, ebp
call fcn.00403c30
test al, al
je 0x4035ca
push 0x80
push ebx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
push 0
lea ecx, [esp + 0x18]
push ebx
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
jne 0x4035ca
push ebx
mov ecx, ebp
call fcn.00402530
push ebx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov ecx, ebp
push str.sysdir
call fcn.00401670
lea edx, [ebp + 0x564]
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x4035e5
lea edx, [ebp + 0x564]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [str._nvide.nvu]
dec edi
push edx
mov dword [edi], eax
mov ecx, dword [0x40ae88]
mov dword [edi + 4], ecx
mov ax, word [0x40ae8c]
mov word [edi + 8], ax
mov cl, byte [0x40ae8e]
mov byte [edi + 0xa], cl
mov ecx, ebp
call fcn.00404320
test al, al
je 0x40366a
push str.GetDrivePort_PortNosysdir
mov ecx, ebp
call fcn.00401e90
push str.GetReg_DriverTypeHKLMHARDWAREDEVICEMAPScsiScsi_Port_PortNoDriver
mov ecx, ebp
call fcn.00401e90
push str.if_DriverType_nvraid_then_del_sysdir_nvide.nvu
mov ecx, ebp
call fcn.00401e90
push str.set_PortNo
mov ecx, ebp
call fcn.00401e90
push str.set_DriverType
mov ecx, ebp
call fcn.00401e90
mov ecx, ebp
call fcn.00403780
push str.Set_Current_Root_Key
mov ecx, ebp
mov dword [0x40d3f0], ebp
call fcn.00401e90
push str.Set_Current_Reg_Key
mov ecx, ebp
call fcn.00401e90
push str.Set_Current_Reg_Name
mov ecx, ebp
call fcn.00401e90
push str.Set_Current_Reg_Value
mov ecx, ebp
call fcn.00401e90
mov ecx, dword [esp + 0x94]
pop edi
mov eax, ebp
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x90
ret 0xc