Function at 0x40a540
Capabilities:
Copy file
Get file version info
Set file attributes

Disassembly:
mov qword [rsp + 8], rcx
sub rsp, 0x228
mov qword [rsp + 0x220], rbx
mov qword [rsp + 0x218], rbp
mov qword [rsp + 0x210], rsi
mov qword [rsp + 0x208], rdi
mov qword [rsp + 0x200], r12
mov qword [rsp + 0x1f8], r13
mov rdi, r8
mov rsi, rcx
mov qword [rsp + 0x48], 0xfffffffffffffffe
call fcn.004045f0
nop
mov qword [rsi + 0xab0], rdi
mov byte [rsi + 0xb48], 0
lea rax, str.Runs_the_given_file_and_deletes_it._It_also_removes_the_given_key_from_Add_Remove_Program_list
mov qword [rsp + 0x20], rax
lea r9, str.NVU_File__Uninstall_Reg_key
lea r8, [0x00405d10]
lea rdx, str.Uninstall
mov rcx, rsi
call fcn.00401030
lea rdx, 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.
mov qword [rsp + 0x20], rdx
lea r9, str.Uninstall_Display_Reg_key
lea r8, [0x00405e60]
lea rdx, str.UnInstallEx
mov rcx, rsi
call fcn.00401030
lea rdx, str.Adds_Display_name_as_the_title_to_in_Add_Remove_programs_list_and_copies_uninstall_binary_and_script_file_to_windows_system_directory
mov qword [rsp + 0x20], rdx
lea r9, str.Uninstall_File___Display_Name
lea r8, [0x00405f20]
lea rdx, str.AddUninstall
mov rcx, rsi
call fcn.00401030
lea rdx, 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.
mov qword [rsp + 0x20], rdx
lea r9, str.Path_to_files_to_be_deleted_on_reboot
lea r8, [0x004057e0]
lea rdx, str.DelBoot
mov rcx, rsi
call fcn.00401030
lea rdx, 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
mov qword [rsp + 0x20], rdx
lea r9, str.Path_to_file_to_be_deleted
lea r8, [fcn.00408570]
lea rdx, [0x0040f464]
mov rcx, rsi
call fcn.00401030
lea rdx, str.Copies_a_file_from_the_given_source_to_given_dest
mov qword [rsp + 0x20], rdx
lea r9, str.Srcfile_DstFile
lea r8, [0x00408620]
lea rdx, str.Copy
mov rcx, rsi
call fcn.00401030
lea rdx, str.Deletes_regkey_s__matching_the_given_registry_key
mov qword [rsp + 0x20], rdx
lea r9, str.Registry_pattern_matching_string
lea r8, [0x00409aa0]
lea rdx, str.DelReg
mov rcx, rsi
call fcn.00401030
lea rdx, str.Only_deletes_regkey_s__matching_the_given_registry_key_if_they_have_no_subkeys_or_values
mov qword [rsp + 0x20], rdx
lea r9, str.Registry_pattern_matching_string
lea r8, [0x00408500]
lea rdx, str.DelRegE
mov rcx, rsi
call fcn.00401030
lea rdx, str.For_all_the_matching_registry_paths__sets_values_if__value__is_present__creates_subkeys_otherwise
mov qword [rsp + 0x20], rdx
lea r9, str.Registry_pattern_matching_stringName_value_
lea r8, [0x00408220]
lea rdx, str.SetReg
mov rcx, rsi
call fcn.00401030
lea rdx, str.If_it_finds_name_under_regkeypath_copies_its_value_to_the_given_variable__othewise_does_nothing.
mov qword [rsp + 0x20], rdx
lea r9, str.Variable__regkeypathName
lea r8, [0x00406330]
lea rdx, str.GetReg
mov rcx, rsi
call fcn.00401030
lea rdx, str.uninstalls_the_given_service_name
mov qword [rsp + 0x20], rdx
lea r9, str.Service_Name
lea r8, [0x00408780]
lea rdx, str.UninstallService
mov rcx, rsi
call fcn.00401030
lea rdx, 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
mov qword [rsp + 0x20], rdx
lea r9, str.Enum_Type___Hardware_ID__Device_type
lea r8, [0x0040a410]
lea rdx, str.RemoveDevice
mov rcx, rsi
call fcn.00401030
lea rdx, str.Installs_the_given_driver_for_any_device_matched_with_the_given_device_ID_from_the_system_using_setupdi_calls.
mov qword [rsp + 0x20], rdx
lea r9, str.Hardware_ID__InfFullPath
lea r8, [0x0040a000]
lea rdx, str.InstallDriverEx
mov rcx, rsi
call fcn.00401030
lea rdx, str.Installs_the_given_driver_for_any_device_matched_using_UpdateDriverForPlugAndPlayDevices_for_Win200_and_above_and_InstallDriverEx_for_Win95_and_Win98
mov qword [rsp + 0x20], rdx
lea r9, str.Hardware_ID__InfFullPath
lea r8, [0x00409d20]
lea rdx, str.InstallDriver
mov rcx, rsi
call fcn.00401030
lea rdx, 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
mov qword [rsp + 0x20], rdx
lea r9, str.Hardware_ID__InfFullPath
lea r8, [0x00408830]
lea rdx, str.CreateDevice
mov rcx, rsi
call fcn.00401030
lea rdx, str.Sets_the_given_variable_to_a_string_representing_the_infs_GUID
mov qword [rsp + 0x20], rdx
lea r9, str.Variable_Name__Full_Path_to_Inf
lea r8, [0x00406810]
lea rdx, str.GetInfGUID
mov rcx, rsi
call fcn.00401030
lea rdx, 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
mov qword [rsp + 0x20], rdx
lea r9, str.WildCard___Section___Name___Value____..._
lea r8, [0x00406b40]
lea rdx, str.DelOemInfs
mov rcx, rsi
call fcn.00401030
lea rdx, str.it_searches_in_all_inf_files_under_sysdirinfOEM.inf_and_if_it_finds_a_match_with_given_parameters_it_deletes_it_on_reboot
mov qword [rsp + 0x20], rdx
lea r9, str.Inffile___Section___Name___Value_____..._
lea r8, [0x00409030]
lea rdx, str.DelIniIfMatched
mov rcx, rsi
call fcn.00401030
lea rdx, str.This_is_a_legacy_command_to_maintain_backward_compatibility.
mov qword [rsp + 0x20], rdx
lea r9, str.Void
lea r8, [0x00406b30]
lea rdx, str.UnifyUninst
mov rcx, rsi
call fcn.00401030
lea rdx, 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
mov qword [rsp + 0x20], rdx
lea r9, str.RegPathToEnumatrate___Command
lea r8, [0x004091c0]
lea rdx, str.EnumRegCmd
mov rcx, rsi
call fcn.00401030
lea rdx, 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
mov qword [rsp + 0x20], rdx
lea r9, str.RegPathToEnumatrate___Command
lea r8, [0x00409280]
lea rdx, str.EnumRegNamesCmd
mov rcx, rsi
call fcn.00401030
lea rdx, str.Adds_the_given_name_to_environment_variables_and_sets_its_value
mov qword [rsp + 0x20], rdx
lea r9, str.NameValue
lea r8, [0x00407030]
lea rdx, str.SetEnv
mov rcx, rsi
call fcn.00401030
lea rdx, str.Displays_the_GUI_to_uninstall_whatever_user_chooses
mov qword [rsp + 0x20], rdx
lea r9, [0x0040d245]
lea r8, [0x00409380]
lea rdx, str.UninstallGUI
mov rcx, rsi
call fcn.00401030
lea rdx, str.Given_an_appname_enumerates_all_the_running_app_and_kills_its_process_if_it_is_running
mov qword [rsp + 0x20], rdx
lea r9, str.AppName
lea r8, [fcn.00407b70]
lea rdx, str.KillApp
mov rcx, rsi
call fcn.00401030
lea rdx, str.Creates_a_shell_link__shortcut_
mov qword [rsp + 0x20], rdx
lea r9, str.LnkFile_Title_ProgFile_ProgArgs_ProgWorkingDir
lea r8, [0x00407bd0]
lea rdx, str.CreateShortcut
mov rcx, rsi
call fcn.00401030
lea rdx, str.It_uses_the_first_char_of_the_path_as_drive_letter_and_assigns_the_port_number_of_that_to_the_given_variable_name.
mov qword [rsp + 0x20], rdx
lea r9, str.Variable__path
lea r8, [0x00407e80]
lea rdx, str.GetDrivePort
mov rcx, rsi
call fcn.00401030
lea rdx, 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.
mov qword [rsp + 0x20], rdx
lea r9, str.DeviceId_Class_Cmd
lea r8, [0x00408c70]
lea rdx, str.EnumDevices
mov rcx, rsi
call fcn.00401030
lea rdx, str.Set_UninstRegKeyHKLMSoftwareMicrosoftWindowsCurrentVersionUninstall
mov rcx, rsi
call fcn.00403690
lea rdx, str.Set_NVUninst_RegKeyUninstRegkeyNVIDIA_Drivers
mov rcx, rsi
call fcn.00403690
lea rdx, str.Set_NVCompList_RegKeyNVUninst_RegKeySubComponents
mov rcx, rsi
call fcn.00403690
lea r8, [0x0040e6a8]
lea rdx, str.Install_ITB_Driver
mov rcx, rsi
call fcn.00402ae0
lea rdx, str.sysdir
mov rcx, rsi
call fcn.00401dc0
lea rdx, [rsi + 0xac8]
nop
nop
movzx ecx, byte [rax]
mov byte [rdx], cl
inc rax
inc rdx
test cl, cl
jne 0x40aa50
lea rdi, [rsi + 0xac8]
xor eax, eax
mov rcx, 0xffffffffffffffff
repne scasb al, byte [rdi]
mov rax, qword [str.NVUninst.nvu]
mov qword [rdi - 1], rax
mov eax, dword [0x0040e6a0]
mov dword [rdi + 7], eax
movzx eax, word [0x0040e6a4]
mov word [rdi + 0xb], ax
lea r8, [rsi + 0xac8]
lea rdx, str.Master_Data_File
mov rcx, rsi
call fcn.00402ae0
mov r9d, 0x80
lea rdi, [0x004125a0]
mov r8, rdi
mov edx, 1
mov rcx, qword [rsi + 0xaa0]
call qword [sym.imp.USER32.dll_LoadStringA]
mov qword [rsi + 0xa98], rdi
mov qword [rsi + 0xab0], 0
mov r8d, 0x104
lea rdx, [rsp + 0x50]
mov rcx, qword [rsi + 0xaa0]
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea rdx, str.sysdir
mov rcx, rsi
call fcn.00401dc0
mov rdi, rax
xor eax, eax
mov rcx, 0xffffffffffffffff
repne scasb al, byte [rdi]
not rcx
dec rcx
mov rbx, rcx
lea rdx, [rsp + 0x50]
mov rcx, rsi
call fcn.00401190
mov rdi, rax
xor eax, eax
mov rcx, 0xffffffffffffffff
repne scasb al, byte [rdi]
not rcx
lea rcx, [rcx + rbx + 1]
call sub.msvcrt.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__
mov rbx, rax
lea rdx, str.sysdir
mov rcx, rsi
call fcn.00401dc0
mov rdx, rbx
movzx ecx, byte [rax]
mov byte [rdx], cl
inc rax
inc rdx
test cl, cl
jne 0x40ab55
lea rdx, [rsp + 0x50]
mov rcx, rsi
call fcn.00401190
mov r11, rax
mov rdi, rbx
xor eax, eax
mov rcx, 0xffffffffffffffff
repne scasb al, byte [rdi]
dec rdi
xor edx, edx
nop
nop
nop
movzx ecx, byte [r11 + rdx - 1]
mov byte [rdi + rdx], cl
inc rdx
test cl, cl
jne 0x40ab90
lea rdx, [rsp + 0x50]
mov rcx, rbx
call qword [sym.imp.msvcrt.dll__mbsicmp]
test eax, eax
sete al
mov byte [rsi + 0xb49], al
test al, al
jne 0x40ac7e
lea rdx, [rsp + 0x30]
mov rcx, rbx
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov r12d, eax
test eax, eax
je 0x40ac50
xor dil, dil
mov ecx, eax
call sub.msvcrt.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__
mov r13, rax
mov r9, rax
mov r8d, r12d
mov edx, dword [rsp + 0x30]
mov rcx, rbx
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
jne 0x40abfd
mov dil, 1
jmp 0x40ac43
lea r9, [rsp + 0x40]
lea r8, [rsp + 0x38]
lea rdx, [0x0040d40c]
mov rcx, r13
call sub.VERSION.dll_VerQueryValueA
test eax, eax
jne 0x40ac1f
mov dil, 1
jmp 0x40ac43
mov rax, qword [rsp + 0x38]
mov ecx, dword [rax + 8]
cmp ecx, 0x10000
jb 0x40ac40
cmp ecx, 0x10000
jne 0x40ac43
cmp dword [rax + 0xc], 0x10014
jae 0x40ac43
mov dil, 1
mov rcx, r13
call sub.msvcrt.dll_void___cdecl_operator_delete_void____ptr64_
test dil, dil
je 0x40ac7e
mov edx, 0x80
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_SetFileAttributesA]
xor r8d, r8d
mov rdx, rbx
lea rcx, [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
jne 0x40ac7e
mov rdx, rbx
mov rcx, rsi
call fcn.00401440
mov rcx, rbx
call sub.msvcrt.dll_void___cdecl_operator_delete_void____ptr64_
lea rdx, str.sysdir
mov rcx, rsi
call fcn.00401dc0
lea rcx, [rsi + 0xac8]
nop
movzx edx, byte [rax]
mov byte [rcx], dl
inc rax
inc rcx
test dl, dl
jne 0x40aca0
lea rdi, [rsi + 0xac8]
xor eax, eax
mov rcx, 0xffffffffffffffff
repne scasb al, byte [rdi]
mov rax, qword [str._nvide.nvu]
mov qword [rdi - 1], rax
movzx eax, word [0x0040e678]
mov word [rdi + 7], ax
movzx eax, byte [0x0040e67a]
mov byte [rdi + 9], al
mov byte [rsp + 0x160], 0x88
mov r8d, 0x4000
lea rdx, [rsp + 0x160]
lea rcx, [rsi + 0xac8]
call qword [sym.imp.KERNEL32.dll_OpenFile]
cmp eax, 0xffffffff
je 0x40ad54
lea rdx, str.GetDrivePort_PortNosysdir
mov rcx, rsi
call fcn.00403690
lea rdx, str.GetReg_DriverTypeHKLMHARDWAREDEVICEMAPScsiScsi_Port_PortNoDriver
mov rcx, rsi
call fcn.00403690
lea rdx, str.if_DriverType_nvraid_then_del_sysdir_nvide.nvu
mov rcx, rsi
call fcn.00403690
lea rdx, str.set_PortNo
mov rcx, rsi
call fcn.00403690
lea rdx, str.set_DriverType
mov rcx, rsi
call fcn.00403690
mov rcx, rsi
call fcn.00409690
mov qword [0x004124c0], rsi
lea rdx, str.Set_Current_Root_Key
mov rcx, rsi
call fcn.00403690
lea rdx, str.Set_Current_Reg_Key
mov rcx, rsi
call fcn.00403690
lea rdx, str.Set_Current_Reg_Name
mov rcx, rsi
call fcn.00403690
lea rdx, str.Set_Current_Reg_Value
mov rcx, rsi
call fcn.00403690
nop
mov rax, rsi
mov rbx, qword [rsp + 0x220]
mov rbp, qword [rsp + 0x218]
mov rsi, qword [rsp + 0x210]
mov rdi, qword [rsp + 0x208]
mov r12, qword [rsp + 0x200]
mov r13, qword [rsp + 0x1f8]
add rsp, 0x228
ret