Function at 0x414c90
Capabilities:
Delete registry key
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x527c10
mov eax, dword fs:[0]
push eax
sub esp, 0xcc
mov eax, dword [0x587730]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
push str.Compsetupstarter
lea ecx, [ebp - 0xb4]
call fcn.00406480
mov ecx, esi
mov dword [ebp - 4], 0
call fcn.0040ea80
mov edi, dword [ebp + 8]
test edi, edi
jne 0x414d02
mov edx, dword [ebp - 0xb4]
mov ecx, dword [esi + 0x24]
push str.__Install_section...
push edx
lea eax, [esi + 0x24]
push 9
push eax
mov eax, dword [ecx + 0x6c]
call eax
add esp, 0x10
lea ecx, [ebp - 0xac]
call fcn.004158b0
lea ecx, [ebp - 0xac]
push ecx
push edi
mov ecx, esi
mov byte [ebp - 4], 1
call fcn.00410c10
mov edi, eax
test edi, edi
jle 0x4152e0
mov edx, dword [esi + 0x48]
push edx
sub esp, 0x9c
lea ebx, [esi + 0x94]
mov ecx, esp
mov dword [ebp - 0xcc], esp
push ebx
call fcn.0040c8c0
sub esp, 0x9c
lea eax, [ebp - 0xac]
mov ecx, esp
mov dword [ebp - 0xd0], esp
push eax
mov byte [ebp - 4], 2
call fcn.0040c8c0
mov ecx, esi
mov byte [ebp - 4], 1
call fcn.0040f190
test eax, eax
je 0x414e0b
mov edx, dword [ebp - 0xb4]
mov ecx, dword [esi + 0x24]
mov eax, dword [ecx + 0x6c]
push str.__Component_still_installed.
push edx
lea edi, [esi + 0x24]
push 9
push edi
call eax
mov edx, dword [ebp - 0xb4]
mov ecx, dword [edi]
mov eax, dword [ecx + 0x6c]
push str.ancel_Installation____
push edx
push 0
push edi
call eax
mov edx, dword [ebp - 0xb4]
mov ecx, dword [edi]
mov eax, dword [ecx + 0x6c]
push str.__RestoreClients...
push edx
push 9
push edi
call eax
add esp, 0x30
mov ecx, esi
call fcn.0040d250
lea ecx, [ebp - 0xac]
mov byte [ebp - 4], 0
call fcn.00415960
mov eax, dword [ebp - 0xb4]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x414e01
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0x3e8
jmp 0x41574a
push ebx
lea ecx, [ebp - 0xac]
call fcn.00415860
test al, al
jne 0x414ec6
cmp dword [esi + 0x4c], 0
je 0x414ec6
mov edx, dword [esi + 0x9c]
mov eax, dword [ebp - 0xa4]
mov ecx, dword [esi + 0x24]
push edx
mov edx, dword [ebp - 0xb4]
push eax
mov eax, dword [ecx + 0x6c]
push str.__Newer_installed_release_of_component_found:_You
push edx
lea ebx, [esi + 0x24]
push 9
push ebx
call eax
mov edx, dword [ebp - 0xb4]
mov ecx, dword [ebx]
mov eax, dword [ecx + 0x6c]
push str.__Component_will_be_installed_without_overwriting:_Only_new_client_entries_will_be_noted.
push edx
push 9
push ebx
call eax
add esp, 0x28
cmp edi, 2
je 0x414e73
test edi, edi
jns 0x414e85
push 0x22
lea ecx, [esi + 0x130]
push str._REINSTALLALL_REINSTALLMODEvemus
call fcn.00406170
cmp edi, 1
jne 0x415624
lea ecx, [esi + 0x94]
push ecx
lea ecx, [ebp - 0xac]
call fcn.00415810
test al, al
je 0x415624
call fcn.0041a2c9
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x415308
push 0x80004005
call fcn.00405680
push ebx
lea ecx, [ebp - 0xac]
call fcn.00415770
test al, al
je 0x414ef4
mov edx, dword [esi + 0x9c]
push edx
mov edx, dword [ebp - 0xa4]
push edx
mov edx, dword [ebp - 0xb4]
push str._Wrong_here____But_older_component_release_installed___Installed:__s___Wanted_to_install_now:__s
push edx
push 1
jmp 0x414f45
push ebx
lea ecx, [ebp - 0xac]
call fcn.00415860
test al, al
je 0x414f19
mov edx, dword [esi + 0x9c]
push edx
mov edx, dword [ebp - 0xa4]
push edx
push str.__Equal_component_release_installed:__s___actual_release_of_this_setup:__s
jmp 0x414f3c
push ebx
lea ecx, [ebp - 0xac]
call fcn.004157c0
test al, al
je 0x414f54
mov edx, dword [esi + 0x9c]
push edx
mov edx, dword [ebp - 0xa4]
push edx
push str.__Newer_component_release_installed:__s___actual_release_of_this_setup:__s
mov edx, dword [ebp - 0xb4]
push edx
push 0xa
mov ecx, dword [esi + 0x24]
lea eax, [esi + 0x24]
push eax
mov eax, dword [ecx + 0x6c]
call eax
add esp, 0x18
mov edx, dword [ebp - 0xb4]
mov ecx, dword [esi + 0x24]
mov eax, dword [ecx + 0x6c]
push str.__Installation_skipped_without_starting_Windows_Installer:_Only_new_client_entries_will_be_noted._OK.
push edx
lea edi, [esi + 0x24]
push 9
push edi
call eax
mov ecx, dword [edi]
mov edx, dword [ecx + 0x6c]
push 0x539624
push 0x539624
push 9
push edi
call edx
mov eax, dword [esi + 4]
mov edx, dword [eax + 0x18]
lea ebx, [esi + 4]
add esp, 0x20
lea ecx, [ebp - 0xb0]
push ecx
mov ecx, ebx
call edx
mov dword [ebp - 0xbc], eax
mov eax, dword [edi]
mov edx, dword [eax + 0x18]
lea ecx, [ebp - 0xc8]
push ecx
mov ecx, edi
mov byte [ebp - 4], 3
call edx
mov edi, eax
mov eax, dword [ebp - 0xbc]
mov ecx, dword [eax]
xor edx, edx
test ecx, ecx
setne dl
mov byte [ebp - 4], 4
test edx, edx
jne 0x414fd6
push 0x80004005
call fcn.00405680
mov edi, dword [edi]
push ecx
push edi
call fcn.0050cbd1
add esp, 8
test eax, eax
mov eax, dword [ebp - 0xc8]
setne byte [ebp - 0xc1]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415011
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0xb0]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415037
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [ebp - 0xc1], 0
je 0x415059
mov edx, dword [ebp - 0xb4]
mov ecx, dword [ebx]
mov eax, dword [ecx + 0x6c]
push str.__Installation_skipped_without_starting_Windows_Installer:_Only_new_client_entries_will_be_noted._OK.
push edx
push 9
push ebx
call eax
add esp, 0x10
mov ecx, esi
call fcn.0040ef30
push 0x53edcc
mov ecx, esi
call fcn.0040ecc0
call fcn.0041a2c9
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x415086
push 0x80004005
call fcn.00405680
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0xb0], edi
push str.SOFTWARESIEMENSShared_ToolsCompSetup
lea ecx, [ebp - 0xc0]
mov byte [ebp - 4], 5
call fcn.00406480
mov edx, dword [ebp - 0xc0]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
mov byte [ebp - 4], 6
or ecx, eax
jge 0x4150d8
push 0
lea ecx, [ebp - 0xc0]
call fcn.00406f10
mov edx, dword [ebp - 0xc0]
lea ecx, [ebp - 0xb8]
push ecx
push 0x2001f
push 0
push edx
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x415254
push 0x53cb7c
lea ecx, [ebp - 0xb0]
call fcn.00406540
mov eax, dword [ebp - 0xb0]
mov edx, dword [eax - 8]
mov edi, dword [eax - 0xc]
mov ecx, 1
sub ecx, dword [eax - 4]
or edx, ecx
jge 0x415135
push 0
lea ecx, [ebp - 0xb0]
call fcn.00406f10
mov eax, dword [ebp - 0xb0]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
lea edx, [edi + edi + 2]
push edx
push eax
mov eax, dword [ebp - 0xb8]
push 1
push 0
push str.Restart
push eax
call ebx
lea ecx, [esi + 0x74]
push ecx
lea ecx, [ebp - 0xb0]
call fcn.00406ac0
mov eax, dword [ebp - 0xb0]
mov edx, dword [eax - 8]
mov edi, dword [eax - 0xc]
mov ecx, 1
sub ecx, dword [eax - 4]
or edx, ecx
jge 0x41518d
push 0
lea ecx, [ebp - 0xb0]
call fcn.00406f10
mov eax, dword [ebp - 0xb0]
lea edx, [edi + edi + 2]
push edx
push eax
mov eax, dword [ebp - 0xb8]
push 1
push 0
push str.ComponentEntry
push eax
call ebx
lea ecx, [esi + 0x8c]
push ecx
lea edx, [esi + 0x154]
push edx
lea eax, [ebp - 0xbc]
push eax
call fcn.00405bc0
add esp, 0xc
push eax
lea ecx, [ebp - 0xb0]
mov byte [ebp - 4], 7
call fcn.00406ac0
mov eax, dword [ebp - 0xbc]
add eax, 0xfffffff0
mov byte [ebp - 4], 6
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4151f8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0xb0]
mov ecx, dword [edi - 0xc]
mov eax, 1
sub eax, dword [edi - 4]
mov dword [ebp - 0xbc], ecx
mov ecx, dword [edi - 8]
or ecx, eax
jge 0x415229
push 0
lea ecx, [ebp - 0xb0]
call fcn.00406f10
mov edi, dword [ebp - 0xb0]
mov edx, dword [ebp - 0xbc]
mov ecx, dword [ebp - 0xb8]
lea eax, [edx + edx + 2]
push eax
push edi
push 1
push 0
push str.LogFile
push ecx
call ebx
mov edx, dword [ebp - 0xb8]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, esi
call fcn.0040cb20
mov eax, dword [ebp - 0xc0]
add eax, 0xfffffff0
mov byte [ebp - 4], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415281
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add edi, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4152a1
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
lea ecx, [ebp - 0xac]
mov byte [ebp - 4], 0
call fcn.00415960
mov eax, dword [ebp - 0xb4]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4152d9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
jmp 0x41574a
jne 0x414e6a
mov edx, dword [ebp - 0xb4]
mov ecx, dword [esi + 0x24]
push str.__Component_not__already_and_or_no_longer__installed:_Will_install_it...
push edx
lea eax, [esi + 0x24]
push 9
push eax
mov eax, dword [ecx + 0x6c]
call eax
add esp, 0x10
jmp 0x415624
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0xb0], eax
mov byte [ebp - 4], 8
call fcn.0041a2c9
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x415338
push 0x80004005
call fcn.00405680
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0xc8], eax
mov byte [ebp - 4], 9
call fcn.0041a2c9
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x415368
push 0x80004005
call fcn.00405680
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0xb8], edi
mov bl, 0xa
push str.SoftwareSIEMENSShared_Tools_
lea ecx, [ebp - 0xb0]
mov byte [ebp - 4], bl
mov dword [ebp - 0xbc], 0x800
call fcn.00406540
lea ecx, [esi + 0x74]
push ecx
lea edx, [ebp - 0xd0]
push 0x536ec8
push edx
call fcn.00405d20
add esp, 0xc
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0xb0]
mov byte [ebp - 4], 0xb
call fcn.00406170
mov eax, dword [ebp - 0xd0]
add eax, 0xfffffff0
mov byte [ebp - 4], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4153ec
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x536ec8
lea ecx, [ebp - 0xb0]
push ecx
lea edx, [ebp - 0xcc]
push edx
call fcn.00405c70
push 0x53a1b0
push eax
lea eax, [ebp - 0xd0]
push eax
mov byte [ebp - 4], 0xc
call fcn.00405c70
add esp, 0x18
push eax
lea ecx, [ebp - 0xc8]
mov byte [ebp - 4], 0xd
call fcn.00406ac0
mov eax, dword [ebp - 0xd0]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415453
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0xcc]
add eax, 0xfffffff0
mov byte [ebp - 4], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415478
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, dword [ebp - 0xb0]
mov ecx, dword [ebx - 8]
mov eax, 1
sub eax, dword [ebx - 4]
or ecx, eax
jge 0x4154a0
push 0
lea ecx, [ebp - 0xb0]
call fcn.00406f10
mov ebx, dword [ebp - 0xb0]
lea ecx, [ebp - 0xc0]
push ecx
push 0x20019
push 0
push ebx
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4155be
mov eax, dword [ebp - 0xbc]
lea edx, [ebp - 0xbc]
push edx
push eax
lea ecx, [ebp - 0xb8]
call fcn.004065b0
mov edx, dword [ebp - 0xc0]
push eax
lea ecx, [ebp - 0xd8]
push ecx
push 0
push str.UninstallString
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x4155ab
mov eax, dword [ebp - 0xc0]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edi, dword [ebp - 0xb8]
mov eax, dword [edi - 8]
push eax
push edi
call fcn.0050cf35
add esp, 8
test eax, eax
js 0x4155a1
cmp eax, dword [edi - 8]
jg 0x4155a1
xor ecx, ecx
mov dword [edi - 0xc], eax
mov word [edi + eax*2], cx
lea ecx, [ebp - 0xb8]
call fcn.0040c2b0
mov edi, dword [ebp - 0xb8]
cmp dword [edi - 0xc], 0
jl 0x4155b1
push str.msiexec
push edi
call fcn.0050cc5c
add esp, 8
test eax, eax
je 0x4155b1
sub eax, edi
sar eax, 1
cmp eax, 0xffffffff
jle 0x4155b1
mov ecx, dword [ebp - 0xb4]
mov edx, dword [esi + 0x24]
mov edx, dword [edx + 0x6c]
push ebx
push str._MSI_entries_not_correct._Delete_home_key:__s
lea eax, [esi + 0x24]
push ecx
push 1
push eax
call edx
mov eax, dword [ebp - 0xc8]
add esp, 0x14
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
push ebx
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
jmp 0x4155b1
push 0x80070057
call fcn.00405680
mov edi, dword [ebp - 0xb8]
mov ecx, dword [ebp - 0xc0]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [edi - 0x10]
mov byte [ebp - 4], 9
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4155de
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0xc8]
add eax, 0xfffffff0
mov byte [ebp - 4], 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415604
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add ebx, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [ebx + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415624
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebx
call edx
mov eax, dword [ebp + 8]
push eax
mov ecx, esi
call fcn.004139e0
mov edi, eax
test edi, edi
je 0x415653
mov edx, dword [ebp - 0xb4]
mov ecx, dword [esi + 0x24]
push edi
push str._Installation_ended_NOT_normally._Return_code:__d
push edx
lea eax, [esi + 0x24]
push 1
push eax
mov eax, dword [ecx + 0x6c]
call eax
add esp, 0x14
push str.SOFTWARESIEMENSShared_ToolsCompSetup
lea ecx, [ebp - 0xd4]
call fcn.00406480
lea ecx, [esi + 0x74]
push ecx
lea edx, [ebp - 0xcc]
push 0x536ec8
mov bl, 0xe
push edx
mov byte [ebp - 4], bl
call fcn.00405d20
add esp, 0xc
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0xd4]
mov byte [ebp - 4], 0xf
call fcn.00406170
mov eax, dword [ebp - 0xcc]
add eax, 0xfffffff0
mov byte [ebp - 4], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4156bb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0xd4]
push ecx
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov ebx, dword [ebp + 8]
test ebx, ebx
je 0x4156e3
mov ecx, esi
call fcn.0040df70
push ebx
mov ecx, esi
call fcn.0040e2d0
mov ecx, esi
call fcn.0040d250
mov eax, dword [ebp - 0xd4]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x415710
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0xac]
mov byte [ebp - 4], 0
call fcn.00415960
mov eax, dword [ebp - 0xb4]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415748
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0050c838
mov esp, ebp
pop ebp
ret 4