Function at 0x101af410
Capabilities:
Check os version

Disassembly:
push 0xffffffffffffffff
push 0x10287f5e
mov eax, dword fs:[0]
push eax
sub esp, 0x150
push ebx
push ebp
push esi
push edi
mov eax, dword [0x1037c990]
xor eax, esp
push eax
lea eax, [esp + 0x164]
mov dword fs:[0], eax
push str.SOFTWARENVIDIA_CorporationInstaller2
lea ecx, [esp + 0x74]
call fcn.10055ee0
mov esi, eax
xor ebp, ebp
mov dword [esp + 0x16c], ebp
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [esp + 0x30]
call fcn.10055ce0
mov byte [esp + 0x16c], 1
push 1
lea ecx, [esp + 0xc0]
push ecx
mov ecx, eax
call fcn.10055e70
mov byte [esp + 0x16c], 2
push esi
push eax
lea ecx, [esp + 0x100]
call fcn.10055f50
mov ebx, 4
mov byte [esp + 0x16c], bl
lea ecx, [esp + 0xbc]
call fcn.100560b0
mov byte [esp + 0x16c], 5
lea ecx, [esp + 0x2c]
call fcn.100560b0
mov byte [esp + 0x16c], 6
lea ecx, [esp + 0x70]
call fcn.100560b0
push str.InstallPackagesRelations
lea ecx, [esp + 0x74]
call fcn.10055ee0
mov esi, eax
mov byte [esp + 0x16c], 7
push str.Pending
lea ecx, [esp + 0x30]
call fcn.10055ee0
mov byte [esp + 0x16c], 8
push eax
lea edx, [esp + 0xc0]
push edx
lea ecx, [esp + 0x100]
call fcn.10104ee0
mov byte [esp + 0x16c], 9
push esi
lea ecx, [esp + 0x54]
push ecx
mov ecx, eax
call fcn.10104ee0
mov byte [esp + 0x16c], 0xb
lea ecx, [esp + 0xbc]
call fcn.100560b0
mov byte [esp + 0x16c], 0xc
lea ecx, [esp + 0x2c]
call fcn.100560b0
mov byte [esp + 0x16c], 0xd
lea ecx, [esp + 0x70]
call fcn.100560b0
lea ecx, [esp + 0x50]
call fcn.101e2510
test al, al
je 0x101af64c
call fcn.101ac000
cmp dword [eax + 0x1c], ebx
jl 0x101af642
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x44], esp
push str..RelationshipManager.cpp
call fcn.10035dd0
mov byte [esp + 0x188], 0xe
push 0x282
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x58], esp
push str.CRelationshipManager::SaveDependenciesBeforeReboot
call fcn.10035dd0
mov byte [esp + 0x1a8], 0xf
lea edx, [esp + 0x140]
push edx
lea ecx, [esp + 0x90]
call fcn.101e7180
mov byte [esp + 0x1a8], 0x10
lea ecx, [esp + 0x53]
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x7c], eax
lea edx, [esp + 0x68]
lea eax, [esp + 0x74]
lea ecx, [esp + 0x7c]
mov byte [esp + 0x53], 0
mov dword [esp + 0x74], str.Deleting_existing_package_dependencies_registry
mov dword [esp + 0x78], edx
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], 0x102e2430
mov dword [esp + 0x88], ecx
push ebx
call fcn.101ac000
push eax
mov byte [esp + 0x1b0], 0x11
lea edi, [esp + 0x8c]
call fcn.10002b50
mov byte [esp + 0x16c], 0xd
lea ecx, [esp + 0x104]
call fcn.10002d20
push ebp
lea ecx, [esp + 0x54]
call fcn.101e7950
push ebp
push ebp
lea ecx, [esp + 0x58]
call fcn.101e7690
mov dword [esp + 0x20], ebp
mov byte [esp + 0x16c], 0x14
lea edx, [esp + 0x1c]
push edx
push 0x102b3b0c
call fcn.1004d780
cmp eax, ebp
jl 0x101af6c9
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
cmp eax, ebp
je 0x101af68a
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov ebx, dword [esp + 0x174]
push ebp
mov ecx, esi
mov dword [esp + 0x24], esi
call fcn.101ac880
mov eax, dword [esp + 0x20]
lea edx, [esp + 0x5c]
xor ebx, ebx
mov dword [esp + 0x5c], ebx
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0x28]
call eax
cmp eax, ebx
jge 0x101af6da
push ebx
push 0x28d
push 0x102e0474
push eax
call fcn.100048f0
push ebp
push 0x289
push 0x102e0474
push eax
call fcn.100048f0
cmp dword [esp + 0x5c], ebx
jne 0x101af75a
push str.No_package_dependencies
lea ecx, [esp + 0x28]
call fcn.100044a0
mov bl, 0x15
mov byte [esp + 0x16c], bl
push 0x102b2468
lea ecx, [esp + 0x1c]
call fcn.100044a0
mov byte [esp + 0x16c], 0x16
push 1
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x20]
push edx
lea ecx, [esp + 0x5c]
call fcn.101e5260
mov byte [esp + 0x16c], bl
lea ecx, [esp + 0x18]
call fcn.10004720
mov byte [esp + 0x16c], 0x14
lea ecx, [esp + 0x24]
call fcn.10004720
mov byte [esp + 0x16c], 0xd
lea eax, [esp + 0x20]
push eax
call fcn.1005b8c0
jmp 0x101afe3b
call fcn.101ac000
cmp dword [eax + 0x1c], 6
jl 0x101af832
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x44], esp
push str..RelationshipManager.cpp
call fcn.10035dd0
mov byte [esp + 0x188], 0x17
push 0x298
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x58], esp
push str.CRelationshipManager::SaveDependenciesBeforeReboot
call fcn.10035dd0
mov byte [esp + 0x1a8], 0x18
lea ecx, [esp + 0x140]
push ecx
lea ecx, [esp + 0x90]
call fcn.101e7180
mov byte [esp + 0x1a8], 0x19
lea edx, [esp + 0x53]
mov dword [esp + 0x6c], edx
mov dword [esp + 0x7c], eax
lea ecx, [esp + 0x68]
lea edx, [esp + 0x74]
lea eax, [esp + 0x7c]
mov byte [esp + 0x53], 0
mov dword [esp + 0x74], str.Storing_package_dependencies_in_registry
mov dword [esp + 0x78], ecx
mov dword [esp + 0x80], edx
mov dword [esp + 0x84], 0x102e2444
mov dword [esp + 0x88], eax
push 6
call fcn.101ac000
push eax
mov byte [esp + 0x1b0], 0x1a
lea edi, [esp + 0x8c]
call fcn.10002b50
mov byte [esp + 0x16c], 0x14
lea ecx, [esp + 0x104]
call fcn.10002d20
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
mov byte [esp + 0x16c], 0x1b
lea eax, [esp + 0x60]
call fcn.101bd370
lea ecx, [esp + 0x124]
push ecx
mov ecx, dword [esp + 0x24]
call fcn.100bef40
mov byte [esp + 0x16c], 0x1c
mov ebp, dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea edx, [esp + 0x12c]
push edx
call ebp
mov eax, dword [esp + 0x124]
mov dword [esp + 0x24], ebx
cmp eax, ebx
je 0x101af8aa
mov ecx, dword [eax]
lea edx, [esp + 0x24]
push edx
lea edx, [esp + 0x130]
push edx
push 1
push eax
mov eax, dword [ecx + 0xc]
call eax
cmp eax, ebx
jl 0x101afceb
cmp dword [esp + 0x24], ebx
seta al
test al, al
je 0x101afd3f
lea ecx, [esp + 0x18]
push ecx
lea esi, [esp + 0x128]
call fcn.1014fba0
mov byte [esp + 0x16c], 0x1d
mov eax, dword [esp + 0x18]
mov edx, dword [eax]
mov edx, dword [edx + 0x24]
lea ecx, [esp + 0x1c]
push ecx
push eax
call edx
cmp eax, ebx
jl 0x101afcf8
lea ecx, [esp + 0x9c]
call fcn.10002dd0
mov byte [esp + 0x16c], 0x1e
mov esi, dword [esp + 0x18]
lea ecx, [esp + 0x9c]
mov dword [esp + 0xb4], ebx
call fcn.100041b0
lea eax, [esp + 0xa4]
push eax
call ebp
cmp eax, ebx
jl 0x101afceb
mov ecx, 8
mov edi, 2
mov word [esp + 0xa4], cx
lea eax, [esp + 0xac]
mov dword [esp + 0xb4], edi
mov dword [esp + 0xac], ebx
mov edx, dword [esi]
mov ecx, dword [edx + 0x1c]
push eax
push esi
call ecx
cmp eax, ebx
jl 0x101afd09
lea ecx, [esp + 0xd4]
call fcn.10002dd0
mov byte [esp + 0x16c], 0x1f
mov esi, dword [esp + 0x18]
lea ecx, [esp + 0xd4]
mov dword [esp + 0xec], ebx
call fcn.100041b0
lea edx, [esp + 0xdc]
push edx
call ebp
cmp eax, ebx
jl 0x101afceb
mov eax, 8
mov word [esp + 0xdc], ax
lea edx, [esp + 0xe4]
mov dword [esp + 0xec], edi
mov dword [esp + 0xe4], ebx
mov ecx, dword [esi]
mov eax, dword [ecx + 0x2c]
push edx
push esi
call eax
cmp eax, ebx
jl 0x101afd1a
call fcn.101ac000
cmp dword [eax + 0x1c], 5
jl 0x101afb20
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x64], esp
push 0x19
mov esi, 7
xor edx, edx
mov dword [ecx + 0x18], esi
mov dword [ecx + 0x14], ebx
push str..RelationshipManager.cpp
mov word [ecx + 4], dx
call fcn.10035ce0
mov byte [esp + 0x188], 0x20
push 0x2ad
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x7c], esp
push 0x32
xor eax, eax
mov dword [ecx + 0x18], esi
mov dword [ecx + 0x14], ebx
push str.CRelationshipManager::SaveDependenciesBeforeReboot
mov word [ecx + 4], ax
call fcn.10035ce0
mov byte [esp + 0x1a8], 0x21
mov edi, dword [esp + 0x58]
lea ecx, [esp + 0x64]
push ecx
call fcn.101ac2e0
add esp, 4
mov byte [esp + 0x1a8], 0x22
lea edx, [esp + 0x53]
mov dword [esp + 0xfc], edx
lea ecx, [esp + 0xf8]
lea edx, [esp + 0xd8]
mov dword [esp + 0xcc], ecx
mov dword [esp + 0xc0], edx
mov dword [esp + 0xb8], eax
lea ecx, [esp + 0xc8]
lea edx, [esp + 0xc0]
lea eax, [esp + 0x110]
mov dword [esp + 0xc4], ecx
mov dword [esp + 0xbc], edx
mov dword [esp + 0xd0], eax
lea ecx, [esp + 0xb8]
lea edx, [esp + 0xd0]
lea eax, [esp + 0xac]
mov byte [esp + 0x53], 0
mov dword [esp + 0xc8], str.Storing
mov dword [esp + 0xd4], ecx
mov dword [esp + 0xac], str.dependency_relationship
mov dword [esp + 0xb0], edx
mov dword [esp + 0x68], 0x102e2458
mov dword [esp + 0x6c], eax
push 5
call fcn.101ac000
push eax
mov byte [esp + 0x1b0], 0x23
lea edi, [esp + 0x70]
call fcn.10002b50
mov byte [esp + 0x16c], 0x1f
lea ecx, [esp + 0x28]
call fcn.10004720
push 0x102bbbbc
lea ecx, [esp + 0x108]
push ecx
lea ecx, [esp + 0xa4]
call fcn.1007ddf0
mov byte [esp + 0x16c], 0x24
lea edx, [esp + 0xd4]
push edx
lea ecx, [esp + 0x140]
push ecx
mov ecx, eax
call fcn.10054a70
mov byte [esp + 0x16c], 0x25
mov ecx, eax
call fcn.10003840
mov eax, dword [eax]
sub eax, 0x10
push eax
call fcn.10004780
lea edi, [eax + 0x10]
add esp, 4
mov dword [esp + 0x38], edi
mov byte [esp + 0x16c], 0x29
lea edx, [esp + 0x144]
push edx
call ebp
mov byte [esp + 0x16c], 0x28
mov eax, dword [esp + 0x13c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x101afbb9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x16c], 0x2d
lea ecx, [esp + 0x10c]
push ecx
call ebp
mov byte [esp + 0x16c], 0x2c
mov eax, dword [esp + 0x104]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x101afbf6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x1c]
push ebx
cmp eax, dword [esp + 0x68]
jae 0x101afd2b
mov edx, dword [esp + 0x64]
lea ecx, [eax + eax*2]
mov eax, dword [edx + ecx*8 + 4]
lea esi, [edx + ecx*8]
push eax
push edi
mov ecx, esi
call fcn.10095150
mov ecx, dword [esi + 4]
cmp ecx, ebx
je 0x101afc27
mov dword [ecx], eax
jmp 0x101afc29
mov dword [esi], eax
mov dword [esi + 4], eax
mov byte [esp + 0x16c], 0x1f
lea eax, [edi - 0x10]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x101afc50
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x16c], 0x31
lea ecx, [esp + 0xdc]
push ecx
call ebp
mov byte [esp + 0x16c], 0x1e
mov eax, dword [esp + 0xd4]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x101afc8d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x16c], 0x34
lea ecx, [esp + 0xa4]
push ecx
call ebp
mov byte [esp + 0x16c], 0x1d
mov eax, dword [esp + 0x9c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x101afcca
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x16c], 0x1c
mov eax, dword [esp + 0x18]
cmp eax, ebx
je 0x101af872
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
jmp 0x101af872
push ebx
push ebx
push 0x102b274a
push eax
call fcn.100048f0
push ebx
push 0x2a5
push 0x102e0474
push eax
call fcn.100048f0
push ebx
push 0x2a8
push 0x102e0474
push eax
call fcn.100048f0
push ebx
push 0x2ab
push 0x102e0474
push eax
call fcn.100048f0
push 0x2c6
push str.c:dvsp4_build_sw_toolswin32msvc90VC_atlmfcinclude_atlcoll.h
push 0x80070057
call fcn.100048f0
mov byte [esp + 0x16c], 0x1b
lea eax, [esp + 0x124]
push eax
call fcn.10085de0
mov edi, dword [esp + 0x60]
xor esi, esi
mov bl, 0x38
lea esp, [esp]
mov ebp, dword [esp + 0x64]
cmp esi, ebp
jae 0x101afe7f
cmp dword [edi + 8], 0
je 0x101afde4
push edi
lea ecx, [esp + 0xc0]
push ecx
call fcn.10094fb0
mov byte [esp + 0x16c], bl
lea edx, [esp + 0x104]
push esi
push edx
call fcn.100550d0
add esp, 8
mov byte [esp + 0x16c], 0x39
lea ecx, [esp + 0xbc]
push ecx
push ecx
mov ecx, eax
call fcn.10003840
add esp, 4
push eax
lea ecx, [esp + 0x58]
call fcn.101e4a80
mov byte [esp + 0x16c], bl
lea ecx, [esp + 0x104]
call fcn.10002d20
mov byte [esp + 0x16c], 0x1b
lea ecx, [esp + 0xbc]
call fcn.10095220
inc esi
add edi, 0x18
cmp esi, 5
jb 0x101afd60
mov byte [esp + 0x16c], 0x14
mov esi, dword [esp + 0x60]
test esi, esi
je 0x101afe23
test ebp, ebp
jbe 0x101afe16
mov edi, ebp
mov ecx, esi
call fcn.1005eb40
add esi, 0x18
sub edi, 1
jne 0x101afe07
mov edx, dword [esp + 0x60]
push edx
call fcn.1022f576
add esp, 4
mov byte [esp + 0x16c], 0xd
mov eax, dword [esp + 0x20]
test eax, eax
je 0x101afe3b
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov byte [esp + 0x16c], 6
lea ecx, [esp + 0x50]
call fcn.100560b0
mov dword [esp + 0x16c], 0xffffffff
lea ecx, [esp + 0xf8]
call fcn.100560b0
mov ecx, dword [esp + 0x164]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x15c
ret 4
push 0
push 0x27e
push str.c:dvsp4_build_sw_toolswin32msvc90VC_atlmfcinclude_atlcoll.h
push 0x80070057
call fcn.100048f0
int3