Function at 0x403c2d
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x447018
mov eax, dword fs:[0]
push eax
sub esp, 0x68
mov eax, dword [0x460544]
xor eax, esp
mov dword [esp + 0x60], eax
push ebx
push esi
push edi
mov eax, dword [0x460544]
xor eax, esp
push eax
lea eax, [esp + 0x78]
mov dword fs:[0], eax
mov eax, 0x44e464
push eax
mov ebx, ecx
push eax
xor esi, esi
push 3
mov edx, str.Enter
mov ecx, str.CDeskUpdateGUIDlg::PopulateTree
mov edi, 0x461d88
mov dword [esp + 0x28], ebx
mov dword [esp + 0x48], esi
call fcn.0040d853
add esp, 0xc
push 0x44e9f4
lea ecx, [esp + 0x18]
call fcn.00401f84
lea eax, [esp + 0x14]
push eax
mov ecx, ebx
mov dword [esp + 0x84], esi
call fcn.0040568b
or dword [esp + 0x80], 0xffffffff
mov ecx, dword [esp + 0x14]
add ecx, 0xfffffff0
call fcn.0040136f
push esi
push 0x415
mov ecx, ebx
call fcn.004144da
mov ecx, eax
call fcn.004146d4
push 0x3ea
mov ecx, ebx
call fcn.004144da
push esi
push esi
mov edi, eax
push 0xb
mov byte [ebx + 0x1a4], 1
push dword [edi + 0x20]
mov dword [esp + 0x40], edi
call dword [sym.imp.USER32.dll_SendMessageA]
push 0xffff0000
push esi
push 0x1101
push dword [edi + 0x20]
call dword [sym.imp.USER32.dll_SendMessageA]
lea eax, [ebx + 0x1b4]
mov byte [ebx + 0x1a4], 0
mov dword [esp + 0x28], eax
call fcn.00408522
mov dword [esp + 0x38], esi
mov esi, ebx
call fcn.00404958
mov ecx, dword [ebx + 0x7c]
call dword [sym.imp.DeskUpdateCore.dll_public:_int___thiscall_CDeskUpdate::GetCompatibleDriverPackageCountWithoutDependencies_void_]
test eax, eax
jle 0x40433e
and dword [esp + 0x14], 0
push 0x71
lea ecx, [esp + 0x28]
call fcn.00401f84
mov dword [esp + 0x80], 1
mov ecx, dword [eax]
mov eax, dword [ebx + 0x194]
push 0xffff0000
push eax
push eax
push ecx
mov ecx, edi
call fcn.00409516
or dword [esp + 0x80], 0xffffffff
mov ecx, dword [esp + 0x24]
add ecx, 0xfffffff0
mov dword [ebx + 0x1d0], eax
call fcn.0040136f
mov ecx, dword [ebx + 0x7c]
and dword [esp + 0x18], 0
call dword [sym.imp.DeskUpdateCore.dll_public:_int___thiscall_CDeskUpdate::GetCompatibleDriverPackageCount_void_]
test eax, eax
jle 0x404043
mov esi, dword [esp + 0x28]
mov eax, dword [esi + 0x10]
sub eax, dword [esi + 0xc]
push 0xc
cdq
pop ecx
idiv ecx
and dword [esp + 0x10], 0
test eax, eax
jbe 0x403e0c
jmp 0x403dc6
mov esi, dword [esp + 0x28]
push dword [esp + 0x18]
mov ecx, dword [ebx + 0x7c]
call dword [sym.imp.DeskUpdateCore.dll_public:_class_CPackageDriver____thiscall_CDeskUpdate::GetCompatibleDriverPackage_int_]
add eax, 0x48
push dword [eax]
push dword [esp + 0x14]
call fcn.004084fc
add eax, 4
push eax
call fcn.00401ae0
test eax, eax
je 0x403e08
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx + 0x10]
sub eax, dword [ecx + 0xc]
push 0xc
cdq
pop ecx
idiv ecx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], eax
jb 0x403dc2
mov esi, dword [esp + 0x28]
mov eax, dword [esi + 0x10]
sub eax, dword [esi + 0xc]
push 0xc
cdq
pop ecx
idiv ecx
cmp dword [esp + 0x10], eax
jne 0x40402a
push dword [esp + 0x18]
mov ecx, dword [ebx + 0x7c]
call dword [sym.imp.DeskUpdateCore.dll_public:_class_CPackageDriver____thiscall_CDeskUpdate::GetCompatibleDriverPackage_int_]
add eax, 0x6c
mov eax, dword [eax]
cmp dword [eax - 0xc], 0
jne 0x40402a
lea ecx, [esp + 0x44]
call fcn.00401389
push 2
pop esi
push dword [esp + 0x18]
mov dword [esp + 0x84], esi
mov ecx, dword [ebx + 0x7c]
mov edi, dword [sym.imp.DeskUpdateCore.dll_public:_class_CPackageDriver____thiscall_CDeskUpdate::GetCompatibleDriverPackage_int_]
call edi
add eax, 0x48
push eax
lea ecx, [esp + 0x48]
call fcn.00409834
mov eax, dword [esp + 0x44]
cmp dword [eax - 0xc], 0
lea eax, [esp + 0x38]
push eax
jne 0x403e82
lea eax, [esp + 0x64]
jmp 0x403e8e
push dword [esp + 0x1c]
mov ecx, dword [ebx + 0x7c]
call edi
add eax, 0x54
push eax
lea eax, [ebx + 0x84]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassImageIndex]
mov ecx, dword [ebx + 0x7c]
lea eax, [esp + 0x34]
push eax
push dword [esp + 0x1c]
call edi
mov ecx, eax
call dword [sym.imp.DeskUpdateCore.dll_public:_class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char______thiscall_CPackageEx::GetID_void_]
mov byte [esp + 0x80], 3
push dword [eax]
mov edx, str.Internal
push str.ID:_s
push str.Adding_driver_package_to_tree__0_.
push 4
mov ecx, str.CDeskUpdateGUIDlg::PopulateTree
mov edi, 0x461d88
call fcn.0040d853
mov byte [esp + 0x90], 2
mov ecx, dword [esp + 0x44]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.0040136f
mov eax, dword [esp + 0x38]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x44]
cmp dword [eax - 0xc], 0
jne 0x403f22
push 0x9a
lea ecx, [esp + 0x30]
call fcn.00401f84
mov byte [esp + 0x80], 4
or dword [esp + 0x3c], 1
jmp 0x403f26
lea eax, [esp + 0x44]
push dword [ebx + 0x1d0]
mov eax, dword [eax]
push dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
push dword [esp + 0x40]
push eax
call fcn.00409516
mov dword [esp + 0x80], esi
test byte [esp + 0x3c], 1
mov dword [esp + 0x40], eax
je 0x403f63
mov ecx, dword [esp + 0x2c]
and dword [esp + 0x3c], 0xfffffffe
add ecx, 0xfffffff0
call fcn.0040136f
cmp byte [ebx + 0x1b0], 0
jne 0x403fa1
push dword [esp + 0x40]
mov ecx, dword [esp + 0x34]
lea eax, [esp + 0x28]
push eax
call fcn.00419532
push 0x44ea24
lea esi, [esp + 0x28]
call fcn.00401b07
cmp eax, 0xffffffff
je 0x403f95
inc dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
add ecx, 0xfffffff0
call fcn.0040136f
mov edi, dword [esp + 0x28]
mov esi, dword [edi + 0xc]
test esi, esi
jne 0x403fb2
and dword [esp + 0x10], esi
jmp 0x403fc1
mov eax, dword [edi + 0x14]
sub eax, esi
push 0xc
cdq
pop ecx
idiv ecx
mov dword [esp + 0x10], eax
mov ecx, dword [edi + 0x10]
mov eax, ecx
sub eax, esi
push 0xc
cdq
pop esi
idiv esi
cmp eax, dword [esp + 0x10]
jae 0x403fe6
lea eax, [esp + 0x40]
push eax
push 1
push ecx
call fcn.004087d5
mov dword [edi + 0x10], eax
jmp 0x40400e
mov ebx, ecx
lea esi, [esp + 0x50]
call fcn.00408c32
push dword [esp + 0x54]
lea eax, [esp + 0x44]
push dword [esp + 0x54]
push eax
lea eax, [esp + 0x64]
push eax
mov eax, edi
call fcn.00408727
mov ebx, dword [esp + 0x1c]
or dword [esp + 0x80], 0xffffffff
mov ecx, dword [esp + 0x44]
add ecx, 0xfffffff0
call fcn.0040136f
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x28]
mov ecx, dword [ebx + 0x7c]
inc dword [esp + 0x18]
call dword [sym.imp.DeskUpdateCore.dll_public:_int___thiscall_CDeskUpdate::GetCompatibleDriverPackageCount_void_]
cmp dword [esp + 0x18], eax
jl 0x403da7
jmp 0x404047
mov esi, dword [esp + 0x28]
mov ecx, dword [ebx + 0x7c]
and dword [esp + 0x18], 0
call dword [sym.imp.DeskUpdateCore.dll_public:_int___thiscall_CDeskUpdate::GetCompatibleDriverPackageCount_void_]
test eax, eax
jle 0x40423e
mov eax, dword [esi + 0x10]
sub eax, dword [esi + 0xc]
push 0xc
cdq
pop ecx
idiv ecx
and dword [esp + 0x10], 0
test eax, eax
jbe 0x404227
push dword [esp + 0x18]
mov ecx, dword [ebx + 0x7c]
call dword [sym.imp.DeskUpdateCore.dll_public:_class_CPackageDriver____thiscall_CDeskUpdate::GetCompatibleDriverPackage_int_]
add eax, 0x48
push dword [eax]
push dword [esp + 0x14]
call fcn.004084fc
add eax, 4
push eax
call fcn.00401ae0
test eax, eax
jne 0x4040c0
push dword [esp + 0x18]
mov ecx, dword [ebx + 0x7c]
mov esi, dword [sym.imp.DeskUpdateCore.dll_public:_class_CPackageDriver____thiscall_CDeskUpdate::GetCompatibleDriverPackage_int_]
call esi
add eax, 0x6c
push 0x44e464
mov ecx, eax
call fcn.00401c9a
test eax, eax
je 0x4040e3
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx + 0x10]
sub eax, dword [ecx + 0xc]
push 0xc
cdq
pop ecx
idiv ecx
inc dword [esp + 0x10]
mov esi, dword [esp + 0x28]
cmp dword [esp + 0x10], eax
jb 0x404076
jmp 0x404227
mov ecx, dword [ebx + 0x7c]
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0x1c]
call esi
mov ecx, eax
call dword [sym.imp.DeskUpdateCore.dll_public:_class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char______thiscall_CPackageEx::GetID_void_]
mov dword [esp + 0x80], 5
push dword [eax]
mov edx, str.Internal
push str.ID:_s
push str.Adding_driver_package_to_tree__1_.
push 4
mov ecx, str.CDeskUpdateGUIDlg::PopulateTree
mov edi, 0x461d88
call fcn.0040d853
or dword [esp + 0x90], 0xffffffff
mov ecx, dword [esp + 0x2c]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.0040136f
mov ecx, dword [ebx + 0x7c]
mov edi, dword [sym.imp.DeskUpdateCore.dll_public:_class_CPackageDriver____thiscall_CDeskUpdate::GetCompatibleDriverPackage_int_]
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x1c]
call edi
add eax, 0x54
push eax
lea eax, [ebx + 0x84]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassImageIndex]
mov ecx, dword [ebx + 0x7c]
lea eax, [esp + 0x34]
push eax
push dword [esp + 0x1c]
call edi
mov ecx, eax
call dword [sym.imp.DeskUpdateCore.dll_public:_class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char______thiscall_CPackageEx::GetDescription_void_]
push dword [esp + 0x10]
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x84], 6
mov eax, dword [eax]
mov dword [esp + 0x30], eax
call fcn.004084fc
push dword [eax]
push dword [esp + 0x14]
call fcn.004084fc
push dword [eax + 8]
push dword [esp + 0x18]
call fcn.004084fc
push dword [eax + 8]
mov ecx, dword [esp + 0x3c]
push dword [esp + 0x38]
call fcn.00409516
or dword [esp + 0x80], 0xffffffff
mov ecx, dword [esp + 0x34]
add ecx, 0xfffffff0
mov dword [esp + 0x2c], eax
call fcn.0040136f
mov ecx, dword [ebx + 0x7c]
lea eax, [esp + 0x24]
push eax
push dword [esp + 0x1c]
call edi
mov ecx, eax
call dword [sym.imp.DeskUpdateCore.dll_public:_class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char______thiscall_CPackageEx::GetID_void_]
push dword [eax]
call fcn.0042c480
pop ecx
mov ecx, dword [esp + 0x24]
add ecx, 0xfffffff0
mov edi, eax
call fcn.0040136f
mov ecx, dword [esp + 0x30]
push edi
push dword [esp + 0x30]
call fcn.004094fb
push dword [esp + 0x10]
call fcn.004084fc
push dword [eax]
mov eax, dword [esp + 0x34]
call fcn.004094e1
mov edi, dword [esp + 0x30]
mov ecx, dword [ebx + 0x7c]
inc dword [esp + 0x18]
call dword [sym.imp.DeskUpdateCore.dll_public:_int___thiscall_CDeskUpdate::GetCompatibleDriverPackageCount_void_]
cmp dword [esp + 0x18], eax
jl 0x40405d
push dword [ebx + 0x1d0]
mov eax, edi
call fcn.004094e1
push 1
push dword [ebx + 0x1d0]
mov ecx, edi
call fcn.004191e2
push edi
push 1
push dword [ebx + 0x1d0]
mov ecx, ebx
call fcn.00407b40
cmp byte [ebx + 0x1b0], 0
jne 0x40433e
mov eax, dword [esi + 0x10]
fild dword [esp + 0x14]
sub eax, dword [esi + 0xc]
push 0xc
cdq
fstp dword [esp + 0x28]
pop ecx
fld dword [esp + 0x24]
idiv ecx
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
test eax, eax
jge 0x4042a1
fadd dword [0x453850]
fdivp st(1)
mov eax, dword [esi + 0x10]
sub eax, dword [esi + 0xc]
push ecx
push ecx
cdq
mov edi, 0x461d88
fstp qword [esp]
push 0xc
pop ecx
idiv ecx
mov edx, str.Internal
mov ecx, str.CDeskUpdateGUIDlg::PopulateTree
push eax
push dword [esp + 0x20]
push str.iQuestionMarks:__d___ItemsCount:__d___Ratio:__f
push 0x44e464
push 4
call fcn.0040d853
xor esi, esi
add esp, 0x1c
cmp dword [esp + 0x14], esi
jle 0x404335
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx + 0x10]
sub eax, dword [ecx + 0xc]
push 0xc
cdq
pop edi
idiv edi
test eax, eax
jbe 0x404335
mov eax, dword [ecx + 0x10]
fld dword [esp + 0x24]
sub eax, dword [ecx + 0xc]
push edi
cdq
pop ecx
idiv ecx
mov dword [esp + 0x50], eax
fild dword [esp + 0x50]
test eax, eax
jge 0x404319
fadd dword [0x453850]
fdivp st(1)
fcomp qword [0x453848]
fnstsw ax
test ah, 0x41
jne 0x404335
mov byte [ebx + 0x1b0], 3
mov edi, dword [esp + 0x30]
jmp 0x404340
mov byte [ebx + 0x1b0], 1
jmp 0x40432f
xor esi, esi
mov ecx, dword [ebx + 0x7c]
call dword [sym.imp.DeskUpdateCore.dll_public:_int___thiscall_CDeskUpdate::GetCompatibleApplicationPackageCountWithoutDependencies_void_]
test eax, eax
jle 0x4044e6
push 0x9c
lea ecx, [esp + 0x20]
call fcn.00401f84
mov dword [esp + 0x80], 7
mov ecx, dword [eax]
mov eax, dword [ebx + 0x19c]
push 0xffff0000
push eax
push eax
push ecx
mov ecx, edi
call fcn.00409516
or dword [esp + 0x80], 0xffffffff
mov ecx, dword [esp + 0x1c]
add ecx, 0xfffffff0
mov dword [ebx + 0x1d4], eax
call fcn.0040136f
mov eax, dword [ebx + 0x1d4]
push 0xfffffffffffffffd
push esi
push esi
push esi
push esi
push esi
push 4
push eax
mov ecx, edi
call fcn.004190c9
mov ecx, dword [ebx + 0x7c]
mov dword [esp + 0x10], esi
call dword [sym.imp.DeskUpdateCore.dll_public:_int___thiscall_CDeskUpdate::GetCompatibleApplicationPackageCount_void_]
test eax, eax
jle 0x4044ba
mov esi, dword [sym.imp.DeskUpdateCore.dll_public:_class_CPackageApplication____thiscall_CDeskUpdate::GetCompatibleApplicationPackage_int_]
mov ecx, dword [ebx + 0x7c]
lea eax, [esp + 0x24]
push eax
push dword [esp + 0x14]
call esi
mov ecx, eax
call dword [sym.imp.DeskUpdateCore.dll_public:_class_CApplication_const____thiscall_CPackageApplication::Application_void_const]
mov ecx, eax
call dword [sym.imp.DeskUpdateCore.dll_public:_class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char______thiscall_CApplication::GetParentPackageID_void_]
mov dword [esp + 0x80], 8
mov eax, dword [esp + 0x24]
cmp dword [eax - 0xc], 0
jne 0x40448f
mov ecx, dword [ebx + 0x7c]
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0x14]
call esi
mov ecx, eax
call dword [sym.imp.DeskUpdateCore.dll_public:_class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char______thiscall_CPackageEx::GetDescription_void_]
mov byte [esp + 0x80], 9
mov ecx, dword [eax]
push dword [ebx + 0x1d4]
mov eax, dword [ebx + 0x19c]
push eax
push eax
push ecx
mov ecx, edi
call fcn.00409516
mov byte [esp + 0x80], 8
mov ecx, dword [esp + 0x1c]
add ecx, 0xfffffff0
mov dword [esp + 0x14], eax
call fcn.0040136f
mov ecx, dword [ebx + 0x7c]
lea eax, [esp + 0x2c]
push eax
push dword [esp + 0x14]
call esi
mov ecx, eax
call dword [sym.imp.DeskUpdateCore.dll_public:_class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char______thiscall_CPackageEx::GetID_void_]
push dword [eax]
call fcn.0042c480
pop ecx
mov ecx, dword [esp + 0x2c]
add ecx, 0xfffffff0
mov dword [esp + 0x34], eax
call fcn.0040136f
push dword [esp + 0x34]
mov ecx, edi
push dword [esp + 0x18]
call fcn.004094fb
or dword [esp + 0x80], 0xffffffff
mov ecx, dword [esp + 0x24]
add ecx, 0xfffffff0
call fcn.0040136f
mov ecx, dword [ebx + 0x7c]
inc dword [esp + 0x10]
call dword [sym.imp.DeskUpdateCore.dll_public:_int___thiscall_CDeskUpdate::GetCompatibleApplicationPackageCount_void_]
cmp dword [esp + 0x10], eax
jl 0x4043cd
push dword [ebx + 0x1d4]
mov eax, edi
call fcn.004094e1
push 1
push dword [ebx + 0x1d4]
mov ecx, edi
call fcn.004191e2
push edi
push 1
push dword [ebx + 0x1d4]
mov ecx, ebx
call fcn.00407b40
mov ecx, dword [ebx + 0x7c]
mov esi, dword [sym.imp.DeskUpdateCore.dll_public:_class_CArray_class_CHotfix___class_CHotfix__const_const______thiscall_CDeskUpdate::GetHotfixes_void_]
call esi
cmp dword [eax + 8], 0
jle 0x40466c
push 0x84
lea ecx, [esp + 0x20]
call fcn.00401f84
mov dword [esp + 0x80], 0xa
mov ecx, dword [eax]
mov eax, dword [ebx + 0x198]
push 0xffff0000
push eax
push eax
push ecx
mov ecx, edi
call fcn.00409516
or dword [esp + 0x80], 0xffffffff
mov ecx, dword [esp + 0x1c]
add ecx, 0xfffffff0
mov dword [ebx + 0x1cc], eax
call fcn.0040136f
mov eax, dword [ebx + 0x1cc]
push 0xfffffffffffffffe
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push 4
push eax
mov ecx, edi
call fcn.004190c9
mov ecx, dword [ebx + 0x7c]
and dword [esp + 0x14], 0
call esi
cmp dword [eax + 8], 0
jle 0x404640
mov ecx, dword [ebx + 0x7c]
call esi
mov ecx, dword [esp + 0x14]
test ecx, ecx
jl 0x4047f6
cmp ecx, dword [eax + 8]
jge 0x4047f6
mov eax, dword [eax + 4]
shl ecx, 2
add eax, ecx
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [eax]
call dword [sym.imp.DeskUpdateCore.dll_public:_class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char______thiscall_CPackageEx::GetDescription_void_]
mov dword [esp + 0x80], 0xb
mov ecx, dword [eax]
push dword [ebx + 0x1cc]
mov eax, dword [ebx + 0x198]
push eax
push eax
push ecx
mov ecx, edi
call fcn.00409516
or dword [esp + 0x80], 0xffffffff
mov ecx, dword [esp + 0x1c]
add ecx, 0xfffffff0
mov dword [esp + 0x24], eax
call fcn.0040136f
mov ecx, dword [ebx + 0x7c]
call esi
mov ecx, dword [esp + 0x14]
cmp ecx, dword [eax + 8]
jge 0x4047f6
mov eax, dword [eax + 4]
shl ecx, 2
add eax, ecx
lea ecx, [esp + 0x2c]
push ecx
mov ecx, dword [eax]
call dword [sym.imp.DeskUpdateCore.dll_public:_class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char______thiscall_CPackageEx::GetID_void_]
push dword [eax]
call fcn.0042c480
pop ecx
mov ecx, dword [esp + 0x2c]
add ecx, 0xfffffff0
mov dword [esp + 0x34], eax
call fcn.0040136f
push dword [esp + 0x34]
mov ecx, edi
push dword [esp + 0x28]
call fcn.004094fb
mov ecx, dword [ebx + 0x7c]
inc dword [esp + 0x14]
call esi
mov ecx, dword [esp + 0x14]
cmp ecx, dword [eax + 8]
jl 0x404572
push dword [ebx + 0x1cc]
mov eax, edi
call fcn.004094e1
push 1
push dword [ebx + 0x1cc]
mov ecx, edi
call fcn.004191e2
push edi
push 1
push dword [ebx + 0x1cc]
mov ecx, ebx
call fcn.00407b40
mov ecx, dword [ebx + 0x7c]
mov byte [esp + 0x23], 0
call esi
cmp dword [eax + 8], 0
jg 0x404696
mov ecx, dword [ebx + 0x7c]
call dword [sym.imp.DeskUpdateCore.dll_public:_int___thiscall_CDeskUpdate::GetCompatibleApplicationPackageCountWithoutDependencies_void_]
test eax, eax
jg 0x404696
mov ecx, dword [ebx + 0x7c]
call dword [sym.imp.DeskUpdateCore.dll_public:_int___thiscall_CDeskUpdate::GetCompatibleDriverPackageCountWithoutDependencies_void_]
test eax, eax
jle 0x4046b0
push 1
push 0x415
mov ecx, ebx
mov byte [esp + 0x2b], 1
call fcn.004144da
mov ecx, eax
call fcn.004146d4
mov ecx, dword [ebx + 0x7c]
call dword [sym.imp.DeskUpdateCore.dll_public:_class_CBIOSUpdate____thiscall_CDeskUpdate::GetBIOSUpdate_void_]
mov esi, dword [eax]
test esi, esi
je 0x404774
mov ecx, dword [ebx + 0x7c]
call dword [sym.imp.DeskUpdateCore.dll_public:_bool___thiscall_CDeskUpdate::IsInternetMode_void_]
test al, al
je 0x404774
push 0xc9
lea ecx, [esp + 0x20]
mov byte [esp + 0x27], 1
call fcn.00401f84
mov dword [esp + 0x80], 0xc
mov ecx, dword [eax]
mov eax, dword [ebx + 0x1a0]
push 0xffff0000
push eax
push eax
push ecx
mov ecx, edi
call fcn.00409516
or dword [esp + 0x80], 0xffffffff
mov ecx, dword [esp + 0x1c]
add ecx, 0xfffffff0
mov dword [ebx + 0x1d8], eax
call fcn.0040136f
lea eax, [esp + 0x1c]
push eax
mov ecx, esi
call dword [sym.imp.DeskUpdateCore.dll_public:_class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char______thiscall_CPackageEx::GetDescription_void_]
mov dword [esp + 0x80], 0xd
mov ecx, dword [eax]
push dword [ebx + 0x1d8]
mov eax, dword [ebx + 0x1a0]
push eax
push eax
push ecx
mov ecx, edi
call fcn.00409516
or dword [esp + 0x80], 0xffffffff
mov ecx, dword [esp + 0x1c]
add ecx, 0xfffffff0
call fcn.0040136f
push dword [ebx + 0x1d8]
mov eax, edi
call fcn.004094e1
mov eax, dword [ebx + 0x1d0]
xor ecx, ecx
mov dword [esp + 0x14], ecx
cmp eax, ecx
jne 0x404798
mov eax, dword [ebx + 0x1d4]
cmp eax, ecx
jne 0x404798
mov eax, dword [ebx + 0x1cc]
cmp eax, ecx
je 0x40479c
mov dword [esp + 0x14], eax
cmp byte [esp + 0x23], 0
mov byte [ebx + 0x1af], 0
push ecx
je 0x4047fb
push 0x43f
mov ecx, ebx
call fcn.004144da
mov ecx, eax
call fcn.00414692
xor esi, esi
push esi
push 0x440
mov ecx, ebx
call fcn.004144da
mov ecx, eax
call fcn.00414692
push esi
push 0x43e
mov ecx, ebx
call fcn.004144da
mov ecx, eax
call fcn.00414692
push 1
mov ecx, edi
call fcn.00414692
jmp 0x4048d2
call fcn.00415f21
mov ecx, edi
call fcn.00414692
push 1
push 0x43f
mov ecx, ebx
call fcn.004144da
mov ecx, eax
call fcn.00414692
push 0
mov esi, 0x440
push esi
mov ecx, ebx
call fcn.004144da
mov ecx, eax
call fcn.00414692
push 1
push esi
mov ecx, ebx
call fcn.004144da
mov ecx, eax
call fcn.00414692
push 0x43e
mov ecx, ebx
call fcn.004144da
mov esi, eax
lea eax, [esp + 0x40]
push eax
push dword [esi + 0x20]
call dword [sym.imp.USER32.dll_GetWindowRect]
lea eax, [esp + 0x40]
push eax
mov ecx, ebx
call fcn.00419bbb
mov ecx, dword [esp + 0x4c]
push 1
add ecx, 0xffffff45
push ecx
mov ecx, dword [esp + 0x50]
sub ecx, dword [esp + 0x48]
mov eax, 0xbb
push ecx
push eax
push dword [esp + 0x50]
mov ecx, esi
mov dword [esp + 0x58], eax
call fcn.00414652
push 1
mov ecx, esi
call fcn.00414692
push 0x9d
lea ecx, [esp + 0x54]
call fcn.00401f84
mov dword [esp + 0x80], 0xe
push dword [eax]
mov ecx, esi
call fcn.004145f0
or dword [esp + 0x80], 0xffffffff
mov ecx, dword [esp + 0x50]
add ecx, 0xfffffff0
call fcn.0040136f
xor esi, esi
cmp dword [esp + 0x14], esi
je 0x4048ec
push dword [esp + 0x14]
push 5
push 0x110b
push dword [edi + 0x20]
call dword [sym.imp.USER32.dll_SendMessageA]
push esi
push 1
push 0xb
push dword [edi + 0x20]
call dword [sym.imp.USER32.dll_SendMessageA]
push 1
push esi
push dword [edi + 0x20]
call dword [sym.imp.USER32.dll_InvalidateRect]
push dword [edi + 0x20]
call dword [sym.imp.USER32.dll_UpdateWindow]
mov eax, 0x44e464
push eax
push eax
push 3
mov edx, str.Leave
mov ecx, str.CDeskUpdateGUIDlg::PopulateTree
mov edi, 0x461d88
call fcn.0040d853
add esp, 0xc
mov ecx, dword [esp + 0x78]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x60]
xor ecx, esp
call fcn.0042b12c
mov esp, ebp
pop ebp
ret