Function at 0x40dcb0
Capabilities:
Set registry value

Disassembly:
push 0xffffffffffffffff
push 0x43f5a8
mov eax, dword fs:[0]
push eax
sub esp, 0x1c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x456ea4]
xor eax, esp
push eax
lea eax, [esp + 0x30]
mov dword fs:[0], eax
mov edi, ecx
mov dword [esp + 0x2c], edi
call fcn.0041890e
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40dcf7
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 + 0x18], eax
mov dword [esp + 0x38], 0
call fcn.0041890e
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40dd29
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 + 0x14], ebp
push 0x1d
push str.SoftwareSiemensShared_Tools
lea ecx, [esp + 0x20]
mov byte [esp + 0x40], 1
call fcn.004073e0
lea ecx, [edi + 0x10c]
push ecx
lea edx, [esp + 0x28]
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 + 0x20]
mov byte [esp + 0x40], 2
call fcn.00406540
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x38], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40dda1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x18]
mov eax, 1
sub eax, dword [ecx - 4]
mov ecx, dword [ecx - 8]
or ecx, eax
jge 0x40ddbf
push 0
lea ecx, [esp + 0x1c]
call fcn.00407500
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x28]
push ecx
push 0x2001f
push 0
push edx
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x40e098
mov eax, dword [esp + 0x28]
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push eax
call esi
push 0x442694
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x28]
push edx
call fcn.00405f60
push 0x445a30
push eax
lea eax, [esp + 0x38]
mov bl, 3
push eax
mov byte [esp + 0x50], bl
call fcn.00405f60
add esp, 0x18
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x3c], 4
call fcn.00407040
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x38], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40de50
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov byte [esp + 0x38], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40de75
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebp, dword [esp + 0x14]
mov ecx, dword [ebp - 8]
mov eax, 1
sub eax, dword [ebp - 4]
or ecx, eax
jge 0x40de97
push 0
lea ecx, [esp + 0x18]
call fcn.00407500
mov ebp, dword [esp + 0x14]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
lea ecx, [esp + 0x1c]
push ecx
push 0x2001f
push 0
push ebp
push 0x80000002
call ebx
test eax, eax
je 0x40df08
mov edx, dword [esp + 0x1c]
push edx
call esi
mov ecx, dword [edi + 0x1c]
mov edx, dword [ecx + 0x68]
lea eax, [edi + 0x1c]
push str.Creating_Clients_key._Probably_setup_was_executed_in_a_special_mode_for_single_installation.
push 0xa
push eax
call edx
mov ecx, dword [ebp - 8]
mov eax, 1
sub eax, dword [ebp - 4]
add esp, 0xc
or ecx, eax
jge 0x40def0
push 0
lea ecx, [esp + 0x18]
call fcn.00407500
mov ebp, dword [esp + 0x14]
lea eax, [esp + 0x1c]
push eax
push ebp
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyW]
mov ecx, dword [esp + 0x1c]
push ecx
call esi
mov ecx, dword [ebp - 8]
mov eax, 1
sub eax, dword [ebp - 4]
or ecx, eax
jge 0x40df26
push 0
lea ecx, [esp + 0x18]
call fcn.00407500
mov ebp, dword [esp + 0x14]
lea edx, [esp + 0x1c]
push edx
push 0x2001f
push 0
push ebp
push 0x80000002
call ebx
test eax, eax
jne 0x40e06e
call fcn.0041890e
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40df5c
push 0x80004005
call fcn.00406210
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x24], edi
push 0x442630
lea ecx, [esp + 0x24]
mov byte [esp + 0x3c], 5
call fcn.00406960
mov ebx, dword [esp + 0x2c]
mov esi, dword [ebx + 0x150]
test esi, esi
mov byte [esp + 0x38], 6
je 0x40e016
test esi, esi
mov eax, esi
je 0x40e069
mov esi, dword [esi]
add eax, 8
push eax
lea ecx, [esp + 0x28]
call fcn.00407040
mov edx, dword [esp + 0x20]
mov ecx, dword [edx - 8]
mov edi, dword [edx - 0xc]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x40dfd4
push 0
lea ecx, [esp + 0x24]
call fcn.00407500
mov edx, dword [esp + 0x20]
lea ecx, [edi + edi + 2]
mov edi, dword [esp + 0x24]
push ecx
push edx
mov edx, dword [esp + 0x24]
push 1
push 0
push edi
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov ecx, dword [ebx + 0x1c]
mov edx, dword [ecx + 0x68]
test eax, eax
lea eax, [ebx + 0x1c]
push edi
jne 0x40e005
push str.Add_saved_Client__s
push 0xa
jmp 0x40e00c
push str.___Add_saved_Client_Failed:__s
push 0
push eax
call edx
add esp, 0x10
test esi, esi
jne 0x40df96
mov eax, dword [esp + 0x1c]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov byte [esp + 0x38], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40e046
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
mov byte [esp + 0x38], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40e098
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40e098
jmp fcn.0041864b
mov ecx, dword [edi + 0x1c]
mov edx, dword [ecx + 0x68]
lea esi, [edi + 0x1c]
push 0x4482d8
push 1
push esi
call edx
mov ecx, dword [esp + 0x24]
mov eax, dword [esi]
mov edx, dword [eax + 0x68]
push ecx
push str.Referenced_regkey:__s
push 0xa
push esi
call edx
add esp, 0x1c
lea eax, [ebp - 0x10]
mov byte [esp + 0x38], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40e0b9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov dword [esp + 0x38], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40e0e1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret