Function at 0x416d30
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x44115d
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xd7c
push esi
push edi
push 0
push 0
lea eax, [ebp - 0x10]
mov dword [ebp - 0x30], 0xc8
push eax
call dword [sym.imp.CFGMGR32.dll_CM_Locate_DevNodeW]
mov esi, eax
test esi, esi
je 0x416d8e
push 0x4428e8
push 0x457530
call fcn.00401c40
add esp, 8
mov ecx, eax
push esi
call fcn.00405b20
push eax
call fcn.00403350
add esp, 4
push str.1._CM_Locate_DevNode_succeeded
push 0x457470
call fcn.00401c40
push eax
call fcn.00403350
add esp, 0xc
lea eax, [ebp - 0x368]
push 0
push 0xc8
push eax
push dword [ebp - 0x10]
call dword [sym.imp.CFGMGR32.dll_CM_Get_Device_IDW]
test eax, eax
jne 0x416de9
lea eax, [ebp - 0x368]
push eax
push str.2._Device_ID:
push 0x457470
call fcn.00401c40
add esp, 8
push eax
call fcn.00401c40
push eax
call fcn.00403350
add esp, 0xc
push 0
push dword [ebp - 0x10]
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x34]
push eax
call dword [sym.imp.CFGMGR32.dll_CM_Get_DevNode_Status]
test eax, eax
jne 0x416e3d
push str.3._Device_Status:
push 0x457470
call fcn.00401c40
add esp, 8
mov ecx, eax
push str.__Problem_Number:
push dword [ebp - 0x34]
call fcn.00405b20
push eax
call fcn.00401c40
add esp, 8
mov ecx, eax
push dword [ebp - 0x38]
call fcn.00405b20
push eax
call fcn.00403350
add esp, 4
push 0
push dword [ebp - 0x10]
lea eax, [ebp - 0x54]
push eax
call dword [sym.imp.CFGMGR32.dll_CM_Get_Child]
test eax, eax
jne 0x416e68
push str.4._Child_device_found
push 0x457470
call fcn.00401c40
push eax
call fcn.00403350
add esp, 0xc
push 0
push dword [ebp - 0x10]
lea eax, [ebp - 0x58]
push eax
call dword [sym.imp.CFGMGR32.dll_CM_Get_Parent]
test eax, eax
jne 0x416e93
push str.5._Parent_device_found
push 0x457470
call fcn.00401c40
push eax
call fcn.00403350
add esp, 0xc
push 0
push dword [ebp - 0x10]
lea eax, [ebp - 0x5c]
push eax
call dword [sym.imp.CFGMGR32.dll_CM_Get_Sibling]
test eax, eax
jne 0x416ebe
push str.6._Sibling_device_found
push 0x457470
call fcn.00401c40
push eax
call fcn.00403350
add esp, 0xc
push 0
push dword [ebp - 0x10]
lea eax, [ebp - 0x30]
push eax
call dword [sym.imp.CFGMGR32.dll_CM_Get_Device_ID_Size]
test eax, eax
jne 0x416ef6
push str.7._Device_ID_Size:
push 0x457470
call fcn.00401c40
add esp, 8
mov ecx, eax
push dword [ebp - 0x30]
call fcn.00405b20
push eax
call fcn.00403350
add esp, 4
push 0
push dword [ebp - 0x10]
lea eax, [ebp - 0x3c]
push eax
call dword [sym.imp.CFGMGR32.dll_CM_Get_Depth]
test eax, eax
jne 0x416f2e
push str.8._Device_Depth:
push 0x457470
call fcn.00401c40
add esp, 8
mov ecx, eax
push dword [ebp - 0x3c]
call fcn.00405b20
push eax
call fcn.00403350
add esp, 4
push 0
push 0
lea eax, [ebp - 0x70]
xorps xmm0, xmm0
push eax
lea eax, [ebp - 0x40]
push eax
movups xmmword [ebp - 0x70], xmm0
call dword [sym.imp.CFGMGR32.dll_CM_Get_Device_Interface_List_SizeW]
test eax, eax
jne 0x416f70
push str.9._Device_Interface_List_Size:
push 0x457470
call fcn.00401c40
add esp, 8
mov ecx, eax
push dword [ebp - 0x40]
call fcn.00405b20
push eax
call fcn.00403350
add esp, 4
push 0x500
call dword [sym.imp.CFGMGR32.dll_CM_Is_Version_Available]
test eax, eax
mov edx, 0x442b08
mov ecx, 0x442b00
cmove ecx, edx
push ecx
push str.10._Is_Version_5.00_Available:
push 0x457470
call fcn.00401c40
add esp, 8
push eax
call fcn.00401c40
push eax
call fcn.00403350
add esp, 0xc
lea eax, [ebp - 0x44]
push eax
push str.C:WindowsSystem32kernel32.dll
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov esi, eax
mov dword [ebp - 0x28], esi
test esi, esi
jne 0x417003
push str.Failed_to_get_file_version_info_size._Error:
push 0x457530
call fcn.00401c40
add esp, 8
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
mov ecx, esi
call fcn.00405b20
push eax
call fcn.00403350
xor edi, edi
add esp, 4
xor esi, esi
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x14], esi
mov esi, dword [ebp - 0x28]
mov dword [ebp - 0x18], edi
jmp 0x41703c
push esi
lea ecx, [ebp - 0x1c]
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
call fcn.00412a90
mov edi, dword [ebp - 0x1c]
push esi
push 0
push edi
call fcn.00422520
lea eax, [edi + esi]
add esp, 0xc
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x24], eax
push edi
push esi
push 0
push str.C:WindowsSystem32kernel32.dll
mov dword [ebp - 4], 0
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
jne 0x417080
push str.Failed_to_get_file_version_info._Error:
push 0x457530
call fcn.00401c40
add esp, 8
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
mov ecx, esi
call fcn.00405b20
push eax
call fcn.00403350
add esp, 4
lea eax, [ebp - 0x60]
push eax
lea eax, [ebp - 0x20]
push eax
push 0x442c4c
push edi
call sub.VERSION.dll_VerQueryValueW
test eax, eax
jne 0x4170c2
push 0x442c50
push 0x457530
call fcn.00401c40
add esp, 8
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
mov ecx, esi
call fcn.00405b20
push eax
call fcn.00403350
add esp, 4
push 0x442c94
push 0x457470
call fcn.00401c40
mov ecx, dword [ebp - 0x20]
add esp, 8
movzx ecx, word [ecx + 0xa]
push 0x442c90
push ecx
mov ecx, eax
call fcn.00405740
push eax
call fcn.00401c40
mov ecx, dword [ebp - 0x20]
add esp, 8
movzx ecx, word [ecx + 8]
push 0x442c90
push ecx
mov ecx, eax
call fcn.00405740
push eax
call fcn.00401c40
mov ecx, dword [ebp - 0x20]
add esp, 8
movzx ecx, word [ecx + 0xe]
push 0x442c90
push ecx
mov ecx, eax
call fcn.00405740
push eax
call fcn.00401c40
mov ecx, dword [ebp - 0x20]
add esp, 8
movzx ecx, word [ecx + 0xc]
push ecx
mov ecx, eax
call fcn.00405740
push eax
call fcn.00403350
add esp, 4
lea eax, [ebp - 0x770]
push 0x100
push eax
push 0x409
call sub.KERNEL32.dll_VerLanguageNameW
lea eax, [ebp - 0x770]
push eax
push str.Language_Name:
push 0x457470
call fcn.00401c40
add esp, 8
push eax
call fcn.00401c40
push eax
call fcn.00403350
add esp, 0xc
lea eax, [ebp - 0x44]
push eax
push str.C:WindowsSystem32kernel32.dll
push 0
call sub.VERSION.dll_GetFileVersionInfoSizeExW
mov esi, eax
mov dword [ebp - 0x28], esi
test esi, esi
jne 0x4171c8
push str.Failed_to_get_file_version_info_size__Ex_._Error:
push 0x457530
call fcn.00401c40
add esp, 8
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
mov ecx, esi
call fcn.00405b20
push eax
call fcn.00403350
mov esi, dword [ebp - 0x28]
add esp, 4
mov ecx, dword [ebp - 0x18]
mov edx, ecx
sub edx, edi
cmp esi, edx
jae 0x4171db
lea eax, [edi + esi]
mov dword [ebp - 0x18], eax
jmp 0x417212
jbe 0x417212
mov eax, dword [ebp - 0x24]
sub eax, edi
cmp esi, eax
jbe 0x4171fe
lea eax, [ebp - 0x29]
push eax
push esi
lea ecx, [ebp - 0x1c]
call fcn.004031a0
mov eax, dword [ebp - 0x14]
mov edi, dword [ebp - 0x1c]
mov dword [ebp - 0x24], eax
jmp 0x417212
sub esi, edx
push esi
push 0
push ecx
call fcn.00422520
add esp, 0xc
add dword [ebp - 0x18], esi
mov esi, dword [ebp - 0x28]
push edi
push esi
push 0
push str.C:WindowsSystem32kernel32.dll
push 0
call sub.VERSION.dll_GetFileVersionInfoExW
test eax, eax
jne 0x417251
push str.Failed_to_get_file_version_info__Ex_._Error:
push 0x457530
call fcn.00401c40
add esp, 8
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
mov ecx, esi
call fcn.00405b20
push eax
call fcn.00403350
add esp, 4
lea eax, [ebp - 0x48]
mov dword [ebp - 0x4c], 0x104
push eax
lea eax, [ebp - 0x978]
mov dword [ebp - 0x48], 0x104
push eax
lea eax, [ebp - 0x4c]
mov dword [ebp - 0x50], 0x104
push eax
lea eax, [ebp - 0x570]
push eax
push 0
push 0
push str.shell32.dll
push 1
call sub.VERSION.dll_VerFindFileW
test al, 4
je 0x41729c
mov eax, 0x457470
mov ecx, str.VerFindFileW:_Buffer_too_small
jmp 0x4172b4
push str.VerFindFileW:_Windows_Dir:
push 0x457470
call fcn.00401c40
add esp, 8
lea ecx, [ebp - 0x570]
push ecx
push eax
call fcn.00401c40
push eax
call fcn.00403350
add esp, 0xc
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0xb80]
push eax
lea eax, [ebp - 0xd88]
push eax
lea eax, [ebp - 0x978]
push eax
lea eax, [ebp - 0x570]
push eax
push str.shell32.dll
push str.shell32.dll
push 0
call sub.VERSION.dll_VerInstallFileW
push 0x100
lea eax, [ebp - 0x178]
mov dword [ebp - 0x18c], 0x11c
push 0
push eax
mov dword [ebp - 0x180], 0
mov dword [ebp - 0x17c], 0
call fcn.00422520
mov esi, dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
add esp, 0xc
xor eax, eax
mov word [ebp - 0x76], ax
mov dword [ebp - 0x74], eax
push 3
push 0x20
push 3
push 1
push 3
push 2
push eax
push eax
call esi
push edx
push eax
call esi
push edx
push eax
call esi
push edx
push eax
push 0x23
lea eax, [ebp - 0x18c]
mov dword [ebp - 0x188], 0xa
xor ecx, ecx
mov dword [ebp - 0x184], 0
push eax
mov word [ebp - 0x78], cx
call dword [sym.imp.KERNEL32.dll_VerifyVersionInfoW]
test eax, eax
mov eax, str.This_is_Windows_10_or_later
jne 0x417389
mov eax, str.This_is_not_Windows_10_or_later
push eax
push 0x457470
call fcn.00401c40
push eax
call fcn.00403350
add esp, 0xc
lea eax, [ebp - 0x1d8]
push eax
call sub.POWRPROF.dll_GetPwrCapabilities
push 0
push 0
push 0
call sub.POWRPROF.dll_SetSuspendState
push 0
push 1
call dword [sym.imp.KERNEL32.dll_SetSystemPowerState]
push 1
call dword [sym.imp.KERNEL32.dll_RequestWakeupLatency]
call sub.POWRPROF.dll_IsPwrHibernateAllowed
call sub.POWRPROF.dll_IsPwrShutdownAllowed
call sub.POWRPROF.dll_IsPwrSuspendAllowed
call sub.POWRPROF.dll_IsPwrHibernateAllowed
call dword [sym.imp.KERNEL32.dll_IsSystemResumeAutomatic]
push 2
call sub.POWRPROF.dll_PowerDeterminePlatformRoleEx
push 0
push 0
push 2
push 0x44363c
call sub.POWRPROF.dll_PowerSettingRegisterNotification
push 0
call sub.POWRPROF.dll_PowerSettingUnregisterNotification
test edi, edi
je 0x41742b
mov ecx, dword [ebp - 0x24]
mov eax, edi
sub ecx, edi
cmp ecx, 0x1000
jb 0x417421
mov edi, dword [eax - 4]
add ecx, 0x23
sub eax, edi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41743b
push ecx
push edi
call fcn.00420313
add esp, 8
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
call fcn.0042560f
int3