Function at 0x4109e0
Capabilities:
Get installed programs

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x449476
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x4874
call fcn.00434bf0
mov eax, dword [0x460cd0]
xor eax, ebp
mov dword [ebp - 0x18], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov edi, ecx
mov dword [ebp - 0x486c], edi
mov eax, dword [ebp + 8]
mov dword [ebp - 0x487c], eax
xor eax, eax
mov dword [ebp - 0x102c], eax
mov byte [ebp - 0x1028], al
mov dword [ebp - 0x1024], eax
push 0x800
push eax
lea ecx, [ebp - 0x1020]
push ecx
call fcn.00430500
add esp, 0xc
mov dword [ebp - 4], 1
lea edx, [ebp - 0x484c]
push edx
call fcn.00416720
mov byte [ebp - 4], 2
push str.__searchTableUninstall___is_started
mov ecx, 0x466338
call fcn.0041a690
add esp, 4
mov byte [ebp - 4], 3
push 0x80000002
mov ebx, str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall
lea eax, [ebp - 0x102c]
call fcn.0041ad10
test eax, eax
je 0x410ac3
push str.Registry_Init_Error
mov ecx, 0x466338
call fcn.0041a690
add esp, 4
mov dword [ebp - 0x4870], 0
push 0x459a68
lea eax, [ebp - 0x4870]
push eax
call fcn.00430c48
add edi, 0xe1f4
mov dword [ebp - 0x4864], edi
mov eax, dword [edi + 4]
mov eax, dword [eax]
mov dword [ebp - 0x485c], 0
mov dword [ebp - 0x4858], eax
mov eax, edi
mov dword [ebp - 0x485c], eax
lea esp, [esp]
mov esi, dword [edi + 4]
mov dword [ebp - 0x4878], 0
mov dword [ebp - 0x4878], edi
test eax, eax
je 0x410b0b
cmp eax, edi
je 0x410b10
call fcn.0042f9ef
cmp dword [ebp - 0x4858], esi
je 0x4114fd
push 0x381c
push 0
lea ecx, [ebp - 0x484c]
push ecx
call fcn.00430500
add esp, 0xc
lea esi, [ebp - 0x485c]
call fcn.004149c0
mov ebx, 8
cmp dword [eax + 0x18], ebx
jb 0x410b4c
mov eax, dword [eax + 4]
jmp 0x410b4f
add eax, 4
push 1
push 0x800
lea edx, [ebp - 0x384c]
push edx
push str.UninstallString
mov ecx, dword [ebp - 0x102c]
push ecx
mov edx, eax
call fcn.0041ad70
add esp, 0x14
test eax, eax
jne 0x4114e7
lea eax, [ebp - 0x384c]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x410b84
sub eax, edx
sar eax, 1
je 0x4114e7
lea esi, [ebp - 0x485c]
call fcn.004149c0
cmp dword [eax + 0x18], ebx
jb 0x410bae
mov esi, dword [eax + 4]
jmp 0x410bb1
lea esi, [eax + 4]
lea ebx, [ebp - 0x484c]
mov edi, dword [ebp - 0x486c]
call fcn.00413e60
test al, al
je 0x4114e1
lea eax, [ebp - 0x384c]
call fcn.00405910
test al, al
je 0x4114e1
lea esi, [ebp - 0x485c]
call fcn.004149c0
mov ebx, 8
cmp dword [eax + 0x18], ebx
jb 0x410bf7
mov eax, dword [eax + 4]
jmp 0x410bfa
add eax, 4
push 0x3ff
push eax
push 0x400
lea edx, [ebp - 0x484c]
push edx
call fcn.0042f011
add esp, 0x10
lea esi, [ebp - 0x485c]
call fcn.004149c0
cmp dword [eax + 0x18], ebx
jb 0x410c29
mov eax, dword [eax + 4]
jmp 0x410c2c
add eax, 4
push 1
push 0x800
lea ecx, [ebp - 0x404c]
push ecx
push str.DisplayName
mov edx, dword [ebp - 0x102c]
push edx
mov edx, eax
call fcn.0041ad70
add esp, 0x14
test eax, eax
je 0x410c86
lea esi, [ebp - 0x485c]
call fcn.004149c0
cmp dword [eax + 0x18], ebx
jb 0x410c69
mov eax, dword [eax + 4]
jmp 0x410c6c
add eax, 4
push 0x3ff
push eax
push 0x400
lea eax, [ebp - 0x404c]
push eax
call fcn.0042f011
add esp, 0x10
lea esi, [ebp - 0x485c]
call fcn.004149c0
cmp dword [eax + 0x18], ebx
jb 0x410c9b
mov edx, dword [eax + 4]
jmp 0x410c9e
lea edx, [eax + 4]
push 1
push 0x800
lea ecx, [ebp - 0x284c]
push ecx
push str.DisplayIcon
mov eax, dword [ebp - 0x102c]
push eax
call fcn.0041ad70
add esp, 0x14
test eax, eax
je 0x410ce2
push 0x3ff
push 0x451c48
push 0x400
lea ecx, [ebp - 0x284c]
push ecx
call fcn.0042f011
add esp, 0x10
lea edi, [ebp - 0x284c]
lea esi, [ebp - 0x1044]
call fcn.00414560
xor edi, edi
mov dword [ebp - 0x4868], edi
lea esi, [ebp - 0x485c]
call fcn.004149c0
cmp dword [eax + 0x18], ebx
jb 0x410d10
mov eax, dword [eax + 4]
jmp 0x410d13
add eax, 4
push 4
push 4
lea edx, [ebp - 0x4868]
push edx
push str.Description_ID
mov ecx, dword [ebp - 0x102c]
push ecx
mov edx, eax
call fcn.0041ad70
add esp, 0x14
test eax, eax
je 0x410eb4
lea esi, [ebp - 0x485c]
call fcn.004149c0
add eax, 0x1c
cmp dword [eax + 0x18], ebx
jb 0x410d54
mov eax, dword [eax + 4]
jmp 0x410d57
add eax, 4
lea edx, [eax + 2]
lea ebx, [ebx]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x410d60
sub eax, edx
lea esi, [ebp - 0x485c]
sar eax, 1
je 0x410de0
call fcn.004149c0
add eax, 0x1c
cmp dword [eax + 0x18], ebx
jb 0x410d89
mov eax, dword [eax + 4]
jmp 0x410d8c
add eax, 4
push 0x3ff
push eax
push 0x400
lea edx, [ebp - 0x204c]
push edx
call fcn.0042f011
add esp, 0x10
lea esi, [ebp - 0x485c]
call fcn.004149c0
cmp dword [eax + 0x18], ebx
jb 0x410dcb
mov eax, dword [eax + 4]
lea ecx, [ebp - 0x204c]
push ecx
push eax
push str.__s_description_in_Default_table:__s_
jmp 0x410f28
add eax, 4
lea ecx, [ebp - 0x204c]
push ecx
push eax
push str.__s_description_in_Default_table:__s_
jmp 0x410f28
call fcn.004149c0
add eax, 0x1c
cmp dword [eax + 0x18], ebx
jb 0x410df2
mov eax, dword [eax + 4]
jmp 0x410df5
add eax, 4
push 1
push 0x800
lea edx, [ebp - 0x204c]
push edx
push str.Description
mov ecx, dword [ebp - 0x102c]
push ecx
mov edx, eax
call fcn.0041ad70
add esp, 0x14
test eax, eax
je 0x410e7a
push 0x3ff
lea edx, [ebp - 0x404c]
push edx
push 0x400
lea eax, [ebp - 0x204c]
push eax
call fcn.0042f011
add esp, 0x10
lea esi, [ebp - 0x485c]
call fcn.004149c0
add eax, 0x1c
cmp dword [eax + 0x18], ebx
jb 0x410e65
mov eax, dword [eax + 4]
lea ecx, [ebp - 0x204c]
push ecx
push eax
push str.__s_description_just_displayName_:__s_
jmp 0x410f28
add eax, 4
lea ecx, [ebp - 0x204c]
push ecx
push eax
push str.__s_description_just_displayName_:__s_
jmp 0x410f28
lea esi, [ebp - 0x485c]
call fcn.004149c0
add eax, 0x1c
cmp dword [eax + 0x18], ebx
jb 0x410ea2
mov eax, dword [eax + 4]
lea edx, [ebp - 0x204c]
push edx
push eax
push str.__s_description_in_registry:__s_
jmp 0x410f28
add eax, 4
lea edx, [ebp - 0x204c]
push edx
push eax
push str.__s_description_in_registry:__s_
jmp 0x410f28
lea eax, [ebp - 0x404c]
push eax
mov ecx, dword [ebp - 0x4868]
push ecx
lea edx, [ebp - 0x4880]
push edx
call fcn.00418df0
add esp, 0xc
mov byte [ebp - 4], 4
mov eax, dword [eax]
push 0x3ff
push eax
push 0x400
lea eax, [ebp - 0x204c]
push eax
call fcn.0042f011
add esp, 0x10
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x4880]
call fcn.004036b0
lea esi, [ebp - 0x485c]
call fcn.004149c0
add eax, 0x1c
cmp dword [eax + 0x18], ebx
jb 0x410f18
mov eax, dword [eax + 4]
jmp 0x410f1b
add eax, 4
lea ecx, [ebp - 0x204c]
push ecx
push eax
push str.__s_description_with_resource_id:__s_
mov ecx, 0x466338
call fcn.0041a690
add esp, 0xc
lea esi, [ebp - 0x485c]
call fcn.004149c0
cmp dword [eax + 0x18], ebx
jb 0x410f4a
mov edx, dword [eax + 4]
jmp 0x410f4d
lea edx, [eax + 4]
push 1
push 0x800
lea eax, [ebp - 0x184c]
push eax
push str.DisplayVersion
mov ecx, dword [ebp - 0x102c]
push ecx
call fcn.0041ad70
add esp, 0x14
test eax, eax
je 0x410f88
push 0x800
push edi
lea edx, [ebp - 0x184c]
push edx
call fcn.00430500
add esp, 0xc
mov byte [ebp - 0x104c], 0
mov dword [ebp - 0x4854], edi
mov byte [ebp - 0x484d], 0
push 0x800
push edi
lea eax, [ebp - 0x81c]
push eax
call fcn.00430500
add esp, 0xc
push 0x3ff
push str.SOFTWARE
push 0x400
lea ecx, [ebp - 0x81c]
push ecx
call fcn.0042f011
push 0x3ff
push 0x44e838
push 0x400
lea edx, [ebp - 0x81c]
push edx
call fcn.0042f0da
mov edi, dword [ebp - 0x487c]
mov eax, edi
lea ecx, [ebp - 0x81c]
call fcn.00402960
push 0x3ff
push 0x44e838
push 0x400
lea eax, [ebp - 0x81c]
push eax
call fcn.0042f0da
add esp, 0x30
lea esi, [ebp - 0x485c]
call fcn.004149c0
cmp dword [eax + 0x18], ebx
jb 0x41102d
mov eax, dword [eax + 4]
jmp 0x411030
add eax, 4
lea ecx, [ebp - 0x81c]
call fcn.00402960
push 0x3ff
push 0x44e838
push 0x400
lea ecx, [ebp - 0x81c]
push ecx
call fcn.0042f0da
push 0x3ff
push str.InstalledItems
push 0x400
lea edx, [ebp - 0x81c]
push edx
call fcn.0042f0da
add esp, 0x20
lea eax, [ebp - 0x4854]
push eax
lea ecx, [ebp - 0x81c]
push ecx
push 0x80000002
mov ebx, dword [sym.imp.ADVAPI32.dll_RegOpenKeyW]
call ebx
test eax, eax
jne 0x4110c4
push 1
lea edx, [ebp - 0x484d]
push edx
lea ecx, [ebp - 0x484c]
mov edx, dword [ebp - 0x4854]
call fcn.00413210
mov eax, dword [ebp - 0x4854]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x4854], 0
push 0x800
push 0
lea ecx, [ebp - 0x81c]
push ecx
call fcn.00430500
add esp, 0xc
push 0x3ff
push str.SOFTWARE
push 0x400
lea edx, [ebp - 0x81c]
push edx
call fcn.0042f011
push 0x3ff
push 0x44e838
push 0x400
lea eax, [ebp - 0x81c]
push eax
call fcn.0042f0da
mov eax, edi
lea ecx, [ebp - 0x81c]
call fcn.00402960
push 0x3ff
push 0x44e838
push 0x400
lea ecx, [ebp - 0x81c]
push ecx
call fcn.0042f0da
add esp, 0x30
lea esi, [ebp - 0x485c]
call fcn.004149c0
cmp dword [eax + 0x18], 8
jb 0x411151
mov eax, dword [eax + 4]
jmp 0x411154
add eax, 4
lea ecx, [ebp - 0x81c]
call fcn.00402960
push 0x3ff
push 0x44e838
push 0x400
lea edx, [ebp - 0x81c]
push edx
call fcn.0042f0da
push 0x3ff
push str.InstallComponents
push 0x400
lea eax, [ebp - 0x81c]
push eax
call fcn.0042f0da
add esp, 0x20
lea ecx, [ebp - 0x4854]
push ecx
lea edx, [ebp - 0x81c]
push edx
push 0x80000002
call ebx
test eax, eax
jne 0x4111e1
push eax
lea eax, [ebp - 0x484d]
push eax
lea ecx, [ebp - 0x484c]
mov edx, dword [ebp - 0x4854]
call fcn.00413210
mov ecx, dword [ebp - 0x4854]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x4854], 0
push 0x800
push 0
lea edx, [ebp - 0x81c]
push edx
call fcn.00430500
add esp, 0xc
push 0x3ff
push str.SOFTWARE
push 0x400
lea eax, [ebp - 0x81c]
push eax
call fcn.0042f011
push 0x3ff
push 0x44e838
push 0x400
lea ecx, [ebp - 0x81c]
push ecx
call fcn.0042f0da
mov eax, edi
lea ecx, [ebp - 0x81c]
call fcn.00402960
push 0x3ff
push 0x44e838
push 0x400
lea edx, [ebp - 0x81c]
push edx
call fcn.0042f0da
add esp, 0x30
lea esi, [ebp - 0x485c]
call fcn.004149c0
cmp dword [eax + 0x18], 8
jb 0x41126e
mov eax, dword [eax + 4]
jmp 0x411271
add eax, 4
lea ecx, [ebp - 0x81c]
call fcn.00402960
push 0x3ff
push 0x44e838
push 0x400
lea eax, [ebp - 0x81c]
push eax
call fcn.0042f0da
push 0x3ff
push str.SEINst_InstallComponents
push 0x400
lea ecx, [ebp - 0x81c]
push ecx
call fcn.0042f0da
add esp, 0x20
lea edx, [ebp - 0x4854]
push edx
lea eax, [ebp - 0x81c]
push eax
push 0x80000002
call ebx
test eax, eax
jne 0x4112ff
push 2
lea ecx, [ebp - 0x484d]
push ecx
lea ecx, [ebp - 0x484c]
mov edx, dword [ebp - 0x4854]
call fcn.00413210
mov edx, dword [ebp - 0x4854]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x4854], 0
push 0x800
push 0
lea eax, [ebp - 0x81c]
push eax
call fcn.00430500
add esp, 0xc
mov edi, dword [ebp - 0x486c]
mov eax, dword [edi + 0xe204]
push 0x3ff
push eax
push 0x400
lea ecx, [ebp - 0x81c]
push ecx
call fcn.0042f011
push 0x3ff
push 0x44e838
push 0x400
lea edx, [ebp - 0x81c]
push edx
call fcn.0042f0da
add esp, 0x20
lea esi, [ebp - 0x485c]
call fcn.004149c0
cmp dword [eax + 0x18], 8
jb 0x41136c
mov eax, dword [eax + 4]
jmp 0x41136f
add eax, 4
lea ecx, [ebp - 0x81c]
call fcn.00402960
push 0x3ff
push 0x44e838
push 0x400
lea eax, [ebp - 0x81c]
push eax
call fcn.0042f0da
push 0x3ff
push str.SEINst_InstallComponents
push 0x400
lea ecx, [ebp - 0x81c]
push ecx
call fcn.0042f0da
add esp, 0x20
lea edx, [ebp - 0x4854]
push edx
lea eax, [ebp - 0x81c]
push eax
push 0x80000002
call ebx
test eax, eax
jne 0x4113fd
push 2
lea ecx, [ebp - 0x484d]
push ecx
lea ecx, [ebp - 0x484c]
mov edx, dword [ebp - 0x4854]
call fcn.00413210
mov edx, dword [ebp - 0x4854]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x4854], 0
lea esi, [ebp - 0x485c]
call fcn.004149c0
cmp dword [eax + 0x18], 8
jb 0x411413
mov eax, dword [eax + 4]
jmp 0x411416
add eax, 4
lea ebx, [ebp - 0x484c]
mov esi, eax
call fcn.00413e60
cmp dword [ebp - 0x1048], 1
jne 0x411492
lea ecx, [ebp - 0x4860]
call fcn.00403710
mov byte [ebp - 4], 5
lea eax, [ebp - 0x384c]
push eax
lea ecx, [ebp - 0x4860]
call fcn.00403610
push str.MainInst.exe
push str.Setup.exe
lea ecx, [ebp - 0x4860]
push ecx
call fcn.00402370
push 0x3ff
mov edx, dword [ebp - 0x4860]
push edx
push 0x400
lea eax, [ebp - 0x384c]
push eax
call fcn.0042f011
add esp, 0x10
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x4860]
call fcn.004036b0
lea eax, [ebp - 0x384c]
call fcn.00405910
test al, al
je 0x4114c8
lea eax, [ebp - 0x484c]
call fcn.0040f770
mov edi, dword [ebp - 0x4864]
lea esi, [ebp - 0x485c]
call fcn.00409c30
mov eax, dword [ebp - 0x485c]
jmp 0x410af0
lea ecx, [ebp - 0x384c]
push ecx
push str.__s__is_invalid_command...
mov ecx, 0x466338
call fcn.0041a690
add esp, 8
mov edi, dword [ebp - 0x4864]
lea esi, [ebp - 0x485c]
call fcn.00409c30
mov eax, dword [ebp - 0x485c]
jmp 0x410af0
mov dword [ebp - 4], 2
mov byte [ebp - 4], 1
lea edx, [ebp - 0x484c]
push edx
call fcn.004099e0
mov dword [ebp - 4], 0xffffffff
cmp byte [ebp - 0x1028], 0
je 0x411535
mov eax, dword [ebp - 0x102c]
test eax, eax
je 0x411535
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x18]
xor ecx, ebp
call fcn.0042f002
mov esp, ebp
pop ebp
ret 4