Function at 0x411910
Capabilities:
Query or enumerate registry value

Disassembly:
push 0xffffffffffffffff
push 0x43fcdc
mov eax, dword fs:[0]
push eax
sub esp, 0x168
push ebx
push ebp
push esi
push edi
mov eax, dword [0x456ea4]
xor eax, esp
push eax
lea eax, [esp + 0x17c]
mov dword fs:[0], eax
mov esi, ecx
call fcn.0041890e
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x411959
push 0x80004005
call fcn.00406210
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x30], eax
push str.msi.dll
mov dword [esp + 0x188], 0
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov ebx, eax
test ebx, ebx
mov dword [esp + 0x34], ebx
je 0x411b01
cmp dword [esp + 0x18c], 0
je 0x411b01
mov ebp, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.MsiQueryProductStateW
push ebx
call ebp
mov dword [esp + 0x28], eax
mov eax, dword [esi + 0x68]
lea edi, [esi + 0x68]
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
or eax, ecx
jge 0x4119ce
push 0
mov ecx, edi
call fcn.00407500
mov edi, dword [edi]
push edi
call dword [esp + 0x2c]
cmp eax, 5
jne 0x411b01
call fcn.0041890e
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4119f8
push 0x80004005
call fcn.00406210
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
push str.Comp_Deinst_
lea ecx, [esp + 0x18]
mov byte [esp + 0x188], 1
call fcn.00406a30
mov eax, dword [esi + 0x5c]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x1c]
call fcn.00406540
push str.MsiDoActionW
push ebx
call ebp
mov edi, dword [esp + 0x14]
mov ecx, dword [edi - 8]
mov ebx, eax
mov eax, 1
sub eax, dword [edi - 4]
or ecx, eax
jge 0x411a5b
push 0
lea ecx, [esp + 0x18]
call fcn.00407500
mov edi, dword [esp + 0x14]
mov ebp, dword [esp + 0x18c]
push edi
push ebp
call ebx
mov ecx, dword [edi - 8]
mov ebx, eax
mov eax, 1
sub eax, dword [edi - 4]
or ecx, eax
jge 0x411a86
push 0
lea ecx, [esp + 0x18]
call fcn.00407500
mov edi, dword [esp + 0x14]
mov ecx, dword [esi + 0x1c]
mov edx, dword [ecx + 0x68]
push ebx
push edi
lea eax, [esi + 0x1c]
push str.Deinstallation_ended:_Custom_Action__s_returned__d
push 0xa
push eax
call edx
add edi, 0xfffffff0
add esp, 0x14
mov byte [esp + 0x184], 0
lea eax, [edi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x411ac2
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
lea ecx, [esp + 0x44]
call fcn.00415060
lea ecx, [esp + 0x44]
push ecx
push ebp
mov ecx, esi
mov byte [esp + 0x18c], 2
call fcn.00410af0
test eax, eax
jge 0x411aeb
mov ecx, esi
call fcn.0040fdf0
lea ecx, [esp + 0x44]
mov byte [esp + 0x184], 0
call fcn.00415110
jmp 0x412155
call fcn.0041890e
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x411b1b
push 0x80004005
call fcn.00406210
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov byte [esp + 0x184], 3
call fcn.0041890e
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x411b4d
push 0x80004005
call fcn.00406210
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea ebp, [eax + 0x10]
mov dword [esp + 0x1c], ebp
push 0x1f4
mov byte [esp + 0x188], 4
xor ebx, ebx
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, esi
call fcn.0040f4a0
test eax, eax
jge 0x411ec7
cmp dword [esp + 0x18c], ebx
jne 0x411ec7
push str.msiexec.exe__x
lea ecx, [esp + 0x20]
call fcn.00406a30
cmp dword [esp + 0x190], 1
jne 0x411bc6
push str.__qn__ADS_DEINSTPre
lea ecx, [esi + 0x68]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.00405f60
add esp, 0xc
mov byte [esp + 0x184], 5
jmp 0x411be4
push str.__qn__ADS_DEINST1
lea eax, [esi + 0x68]
push eax
lea ecx, [esp + 0x20]
push ecx
call fcn.00405f60
add esp, 0xc
mov byte [esp + 0x184], 6
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x24]
call fcn.00406540
lea ecx, [esp + 0x18]
mov byte [esp + 0x184], 4
call fcn.004069e0
cmp dword [esi + 0x40], 0
je 0x411c19
push str._UPDATEMODE1
lea ecx, [esp + 0x20]
call fcn.00405910
call fcn.0041890e
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x411c33
push 0x80004005
call fcn.00406210
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
push str.SOFTWARESiemensAUTSWGlobal
lea ecx, [esp + 0x18]
mov byte [esp + 0x188], 7
call fcn.00406a30
mov edx, dword [esp + 0x14]
mov eax, dword [esi + 0x168]
lea ecx, [esp + 0x24]
push ecx
push str.SharedPath
push edx
push eax
call fcn.00404340
add esp, 0x10
test eax, eax
jne 0x411cdc
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x24]
push str._COMMONDIR_
push edx
call fcn.00406010
push 0x4468f0
push eax
lea eax, [esp + 0x2c]
push eax
mov byte [esp + 0x19c], 8
call fcn.00405f60
add esp, 0x18
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x18c], 9
call fcn.00406540
lea ecx, [esp + 0x18]
call fcn.004069e0
lea ecx, [esp + 0x20]
mov byte [esp + 0x184], 7
call fcn.004069e0
cmp byte [esi + 0x120], 0
je 0x411e4d
mov ecx, dword [esi + 0x118]
cmp dword [ecx - 0xc], 3
lea edi, [esi + 0x118]
jle 0x411e4d
lea ecx, [esp + 0x18]
call fcn.00406900
mov bl, 0xa
push edi
lea ecx, [esp + 0x1c]
mov byte [esp + 0x188], bl
call fcn.00407040
push 0x2e
lea ecx, [esp + 0x1c]
call fcn.00405bb0
cmp eax, 0xffffffff
jle 0x411d5c
push eax
lea edx, [esp + 0x24]
push edx
lea ecx, [esp + 0x20]
call fcn.00405e30
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x188], 0xb
call fcn.00407040
lea ecx, [esp + 0x20]
mov byte [esp + 0x184], bl
call fcn.004069e0
push str._msi_uninst_intern.txt
lea ecx, [esp + 0x1c]
call fcn.00405910
lea eax, [esp + 0x18]
push eax
lea ecx, [esi + 0x13c]
push ecx
lea edx, [esp + 0x28]
push edx
call fcn.00405eb0
add esp, 0xc
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x188], 0xc
call fcn.00407040
lea ecx, [esp + 0x20]
mov byte [esp + 0x184], bl
call fcn.004069e0
lea eax, [esi + 0x148]
push eax
lea ecx, [esp + 0x30]
push 0x444b44
push ecx
call fcn.00406010
push 0x4487bc
push eax
lea edx, [esp + 0x50]
push edx
mov byte [esp + 0x19c], 0xd
call fcn.00405f60
lea ecx, [esp + 0x30]
push ecx
push eax
lea edx, [esp + 0x60]
push edx
mov byte [esp + 0x1a8], 0xe
call fcn.00405eb0
push 0x4468f0
push eax
lea eax, [esp + 0x4c]
push eax
mov byte [esp + 0x1b4], 0xf
call fcn.00405f60
add esp, 0x30
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0x188], 0x10
call fcn.0040b470
lea ecx, [esp + 0x20]
call fcn.004069e0
lea ecx, [esp + 0x40]
call fcn.004069e0
lea ecx, [esp + 0x3c]
call fcn.004069e0
lea ecx, [esp + 0x2c]
call fcn.004069e0
lea ecx, [esp + 0x18]
mov byte [esp + 0x184], 7
call fcn.004069e0
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esi + 0x1c]
mov edx, dword [ecx + 0x68]
push ebp
lea edi, [esi + 0x1c]
push str.Launch_deinstallation_by_MSI:__s
push 8
push edi
call edx
mov eax, dword [esi + 0x50]
push eax
push ebp
call fcn.00401e80
mov ebx, eax
push ebx
lea eax, [esp + 0x4c]
push 0x4492bc
push eax
call fcn.00407800
mov ecx, dword [edi]
mov edx, dword [ecx + 0x68]
push 0x445d10
push 9
push edi
call edx
mov eax, dword [esp + 0x54]
add eax, 0xfffffff0
add esp, 0x30
mov byte [esp + 0x184], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x411ebb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp ebx, 0x652
je 0x412108
push str.SoftwareSiemensShared_Tools
lea ecx, [esp + 0x18]
call fcn.00406a30
lea ecx, [esi + 0x10c]
push ecx
lea edx, [esp + 0x30]
push 0x442694
push edx
call fcn.00406010
add esp, 0xc
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x18c], 0x11
call fcn.00406540
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
mov byte [esp + 0x184], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x411f2e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x14]
mov eax, 1
sub eax, dword [ecx - 4]
mov ecx, dword [ecx - 8]
or ecx, eax
jge 0x411f4c
push 0
lea ecx, [esp + 0x18]
call fcn.00407500
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x28]
push ecx
push 0x20019
push 0
push edx
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x412108
test ebp, ebp
je 0x411f95
mov eax, ebp
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x411f80
sub eax, edx
sar eax, 1
js 0x412166
cmp eax, dword [ebp - 8]
jg 0x412166
mov dword [ebp - 0xc], eax
lea ecx, [esp + 0x1c]
mov word [ebp + eax*2], 0
call fcn.00407310
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
push eax
call fcn.004075a0
add eax, 0x10
add esp, 4
mov dword [esp + 0x24], eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x184], 0x12
call fcn.0040c2a0
lea eax, [esp + 0x38]
push eax
push 0x800
lea ecx, [esp + 0x24]
mov dword [esp + 0x40], 0x800
call fcn.00406ae0
mov edx, dword [esp + 0x2c]
push eax
lea ecx, [esp + 0x34]
push ecx
push 0
push str.UninstallString
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x4120cc
mov eax, dword [esp + 0x28]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ebx, dword [esi + 0x1c]
lea edi, [esi + 0x1c]
push 0
lea ecx, [esi + 0x134]
call fcn.00406ab0
push eax
push 0
lea ecx, [esp + 0x24]
call fcn.00406ab0
mov ecx, dword [ebx + 0x68]
push eax
push str._Launch_old_deinstallation:__s___Lang:__s
push 8
push edi
call ecx
mov eax, dword [esi + 0x50]
mov ebp, dword [esp + 0x30]
push eax
push ebp
call fcn.004021f0
add esp, 0x1c
cmp dword [esp + 0x34], 0
mov ebx, eax
jne 0x412078
mov edx, dword [edi]
mov eax, dword [edx + 0x68]
push str.________________________________________
push 9
push edi
call eax
add esp, 0xc
cmp ebx, 0x643
jne 0x412094
mov ecx, dword [edi]
mov edx, dword [ecx + 0x68]
push str.MSI_Error:_A_fatal_error_occurred_during__un_installation
push 0
push edi
call edx
add esp, 0xc
jmp 0x4120e0
cmp ebx, 0x64c
jne 0x4120b0
mov eax, dword [edi]
mov ecx, dword [eax + 0x68]
push str.MSI_Error:_The__un_installation_source_for_this_product_is_not_available.
push 0
push edi
call ecx
add esp, 0xc
jmp 0x4120e0
cmp ebx, 0x653
jne 0x4120e0
mov edx, dword [edi]
mov eax, dword [edx + 0x68]
push str.MSI_Error:__un_This_installation_package_could_not_be_opened.
push 0
push edi
call eax
add esp, 0xc
jmp 0x4120e0
mov ecx, dword [esp + 0x28]
push ecx
mov ebx, 0x64
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x184], 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x412108
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add ebp, 0xfffffff0
mov byte [esp + 0x184], 3
lea ecx, [ebp + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41212d
mov ecx, dword [ebp]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebp
call edx
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov byte [esp + 0x184], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412155
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x34]
test eax, eax
je 0x412170
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x412178
push 0x80070057
call fcn.00406210
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
lea ecx, [esp + 0xe0]
call fcn.00415060
mov edx, dword [esp + 0x18c]
lea ecx, [esp + 0xe0]
push ecx
push edx
mov ecx, esi
mov byte [esp + 0x18c], 0x13
call fcn.00410af0
lea ecx, [esp + 0xe0]
mov byte [esp + 0x184], 0
call fcn.00415110
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
mov dword [esp + 0x184], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4121e2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, ebx
mov ecx, dword [esp + 0x17c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x174
ret 8