Function at 0x40a970
Capabilities:
Check os version
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x740
mov eax, dword [0x465100]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push edi
push 0x11c
lea eax, [ebp - 0x738]
push 0
push eax
call fcn.0043f7e0
add esp, 0xc
lea ecx, [ebp - 0x738]
push ecx
mov dword [ebp - 0x738], 0x11c
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
mov ebx, str.IsNeedInstallKB899271
mov edi, 3
test eax, eax
jne 0x40a9d8
lea edx, [ebp - 0x73c]
push edx
mov dword [ebp - 0x73c], str.get_os_version_error___no_need_install_KB899271
push 0x63
jmp 0x40abe6
movzx eax, word [ebp - 0x624]
mov ecx, dword [ebp - 0x730]
push esi
mov esi, dword [ebp - 0x734]
push eax
push ecx
push esi
push str.dwOSMajVer:_lu__dwOSMinVer:_lu__wSPNum:_lu
push str.IsNeedInstallKB899271
mov ecx, 0x67
mov edx, str.R:TempViewMiscSetup3BackupDownloaderInstallObjectInstallObjectDefault.cpp
call fcn.00408be0
add esp, 0x14
cmp esi, 5
pop esi
jne 0x40abce
cmp dword [ebp - 0x730], 1
jne 0x40abce
cmp word [ebp - 0x624], 2
ja 0x40abce
xor edx, edx
push 0x206
push edx
lea eax, [ebp - 0x61a]
push eax
mov word [ebp - 0x61c], dx
call fcn.0043f7e0
add esp, 0xc
push 0x104
lea ecx, [ebp - 0x61c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
test eax, eax
jne 0x40aa7c
lea edx, [ebp - 0x73c]
push edx
mov dword [ebp - 0x73c], str.get_sys_dir_error___no_need_install_KB899271
push 0x72
jmp 0x40abe1
xor eax, eax
push 0x206
push eax
lea ecx, [ebp - 0x412]
push ecx
mov word [ebp - 0x414], ax
call fcn.0043f7e0
lea edx, [ebp - 0x61c]
push edx
push str._sdriversusbvideo.sys
push 0x208
lea eax, [ebp - 0x414]
push 0x104
push eax
call fcn.0043c8a7
xor ecx, ecx
push 0x206
push ecx
lea edx, [ebp - 0x20a]
push edx
mov word [ebp - 0x20c], cx
call fcn.0043f7e0
lea eax, [ebp - 0x20c]
push eax
lea eax, [ebp - 0x414]
call fcn.0040a8c0
lea ecx, [ebp - 0x20c]
push ecx
push str.usbvideo.sys_file_version:__s
push str.IsNeedInstallKB899271
mov ebx, str.IsNeedInstallKB899271
mov ecx, 0x7a
mov edx, str.R:TempViewMiscSetup3BackupDownloaderInstallObjectInstallObjectDefault.cpp
call fcn.00408be0
lea eax, [ebp - 0x20c]
add esp, 0x3c
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40ab17
sub eax, edx
sar eax, 1
jne 0x40abb9
lea eax, [ebp - 0x20c]
call fcn.0040a830
test eax, eax
jg 0x40abb9
lea edx, [ebp - 0x740]
push edx
push 1
push 0
push str.SOFTWAREMicrosoftUpdatesWindows_XPSP3KB899271
push closesocket
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov edx, 0x457798
mov ebx, str.IsNeedInstallKB899271
test eax, eax
jne 0x40ab7c
lea eax, [ebp - 0x73c]
push eax
mov dword [ebp - 0x73c], str.has_register_key:SOFTWAREMicrosoftUpdatesWindows_XPSP3KB899271___no_need_install_KB899271
push 0x85
jmp 0x40abeb
lea ecx, [ebp - 0x73c]
push ecx
push 0x88
push str.R:TempViewMiscSetup3BackupDownloaderInstallObjectInstallObjectDefault.cpp
mov ecx, str.IsNeedInstallKB899271
mov dword [ebp - 0x73c], str.need_install_KB899271
call fcn.00407520
add esp, 0xc
pop edi
mov eax, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0043b634
mov esp, ebp
pop ebp
ret
lea edx, [ebp - 0x73c]
push edx
mov dword [ebp - 0x73c], str.usbvideo.sys_file_version_is_big_than_5.1.2600.2729___no_need_install_KB899271
push 0x7d
jmp 0x40abe1
lea eax, [ebp - 0x73c]
push eax
mov dword [ebp - 0x73c], str.check_os_version_not_fit___no_need_install_KB899271
push 0x6b
mov ebx, str.IsNeedInstallKB899271
mov edx, 0x457798
push str.R:TempViewMiscSetup3BackupDownloaderInstallObjectInstallObjectDefault.cpp
mov ecx, str.IsNeedInstallKB899271
call fcn.00407520
mov ecx, dword [ebp - 4]
add esp, 0xc
pop edi
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.0043b634
mov esp, ebp
pop ebp
ret