Function at 0x1400124b0
Capabilities:
Set registry value

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x70
mov qword [rsp + 0x60], 0xfffffffffffffffe
mov qword [rsp + 0xb0], rbx
mov r14, rcx
call fcn.140025894
mov rcx, rax
xor esi, esi
mov edx, esi
test rax, rax
setne dl
test edx, edx
jne 0x1400124f5
mov ecx, 0x80004005
call fcn.140007cd0
int3
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0xc8], rax
call fcn.140025894
mov rdx, rax
mov ecx, esi
test rax, rax
setne cl
test ecx, ecx
jne 0x140012526
mov ecx, 0x80004005
call fcn.140007cd0
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0xc0], rax
xor eax, eax
or r13, 0xffffffffffffffff
mov rcx, r13
lea rdi, str.SoftwareSiemensShared_Tools
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.SoftwareSiemensShared_Tools
lea rcx, [rsp + 0xc8]
call fcn.140009100
lea r8, [r14 + 0x190]
lea rdx, [0x14005cc80]
lea rcx, [rsp + 0x40]
call fcn.140007ae0
nop
mov r12, qword [rax]
mov edx, dword [r12 - 0x10]
mov dword [rsp + 0xb8], edx
mov rbp, r12
mov rdi, qword [rsp + 0xc8]
sub rbp, rdi
sar rbp, 1
mov r15d, dword [rdi - 0x10]
lea ebx, [r15 + rdx]
mov ecx, 1
sub ecx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
sub eax, ebx
or eax, ecx
jge 0x1400125d9
mov edx, ebx
lea rcx, [rsp + 0xc8]
call fcn.140009290
mov rdi, qword [rsp + 0xc8]
mov edx, dword [rsp + 0xb8]
cmp rbp, r15
ja 0x1400125e2
lea r12, [rdi + rbp*2]
movsxd rdx, edx
add rdx, rdx
lea rcx, [rdi + r15*2]
mov r9, rdx
mov r8, r12
call fcn.14003b8f0
test ebx, ebx
js 0x140012ba8
cmp ebx, dword [rdi - 0xc]
jg 0x140012ba8
mov dword [rdi - 0x10], ebx
movsxd rax, ebx
mov word [rdi + rax*2], 0
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
mov eax, r13d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140012635
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdx, qword [rsp + 0xc8]
mov eax, 1
sub eax, dword [rdx - 8]
or eax, dword [rdx - 0xc]
jge 0x140012661
xor edx, edx
lea rcx, [rsp + 0xc8]
call fcn.140009290
mov rdx, qword [rsp + 0xc8]
lea rax, [rsp + 0x48]
mov qword [rsp + 0x20], rax
mov r9d, 0x2001f
xor r8d, r8d
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x140012b5d
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea r8, [0x14005cc80]
lea rdx, [rsp + 0xc8]
lea rcx, [rsp + 0x58]
call fcn.140007a00
nop
lea r8, [0x140060820]
mov rdx, rax
lea rcx, [rsp + 0x50]
call fcn.140007a00
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rdi, qword [rsp + 0xc0]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x14001272c
cmp dword [rdi + 0x10], 0
jl 0x14001271a
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14001271a
call fcn.140009350
mov rbx, rax
mov ecx, r13d
lock xadd dword [rdi + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x14001270c
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbx + 0x18]
mov qword [rsp + 0xc0], rax
jmp 0x14001272c
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0xc0]
call fcn.140009100
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
mov eax, r13d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001274e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
mov eax, r13d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001276f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdi, qword [rsp + 0xc0]
mov ecx, 1
sub ecx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
or eax, ecx
jge 0x14001279d
xor edx, edx
lea rcx, [rsp + 0xc0]
call fcn.140009290
mov rdi, qword [rsp + 0xc0]
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
mov r9d, 0x2001f
xor r8d, r8d
mov rdx, rdi
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
je 0x14001282e
mov rcx, qword [rsp + 0x30]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea rcx, [r14 + 0x38]
mov rax, qword [rcx]
lea r8, str.Creating_Clients_key._Probably_setup_was_executed_in_a_special_mode_for_single_installation.
mov edx, 0xa
call qword [rax + 0xd0]
mov ecx, 1
sub ecx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
or eax, ecx
jge 0x14001280e
xor edx, edx
lea rcx, [rsp + 0xc0]
call fcn.140009290
mov rdi, qword [rsp + 0xc0]
lea r8, [rsp + 0x30]
mov rdx, rdi
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegCreateKeyW]
mov rcx, qword [rsp + 0x30]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edx, 1
sub edx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
or eax, edx
jge 0x140012854
xor edx, edx
lea rcx, [rsp + 0xc0]
call fcn.140009290
mov rdi, qword [rsp + 0xc0]
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
mov r9d, 0x2001f
xor r8d, r8d
mov rdx, rdi
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x140012b1e
call fcn.140025894
mov rdx, rax
mov ecx, esi
test rax, rax
setne cl
test ecx, ecx
jne 0x14001289e
mov ecx, 0x80004005
call fcn.140007cd0
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x38], rbx
call fcn.140025894
mov rcx, rax
test rax, rax
setne sil
test esi, esi
jne 0x1400128ce
mov ecx, 0x80004005
call fcn.140007cd0
int3
mov rax, qword [rax]
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0xb8], rdi
lea rdx, [0x14005cb94]
test rdx, 0xffffffffffff0000
jne 0x14001291c
movzx esi, dx
mov ecx, esi
call fcn.140025880
test rax, rax
je 0x140012943
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0xb8]
call fcn.1400087e0
mov rdi, qword [rsp + 0xb8]
jmp 0x140012943
xor eax, eax
mov rcx, r13
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsp + 0xb8]
call fcn.140009100
mov rdi, qword [rsp + 0xb8]
mov r12, qword [r14 + 0x218]
test r12, r12
je 0x140012aca
mov rdx, r12
test r12, r12
je 0x140012ac4
mov r12, qword [r12]
mov rdx, qword [rdx + 0x10]
lea rsi, [rdx - 0x18]
lea rbp, [rbx - 0x18]
cmp rsi, rbp
je 0x140012a2c
cmp dword [rbp + 0x10], 0
jl 0x140012a19
mov rcx, qword [rsi]
cmp rcx, qword [rbp]
jne 0x140012a19
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rsi + 0x10], 0
jl 0x1400129ad
cmp rax, qword [rsi]
jne 0x1400129ad
mov rbx, rsi
lock add dword [rsi + 0x10], 1
jmp 0x1400129ea
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rsi + 8]
call qword [rax]
mov rbx, rax
test rax, rax
je 0x140012abe
mov ecx, dword [rsi + 8]
mov dword [rax + 8], ecx
mov ecx, dword [rsi + 8]
add ecx, 1
movsxd rdx, ecx
lea r9, [rdx + rdx]
lea r8, [rsi + 0x18]
add rdx, rdx
lea rcx, [rax + 0x18]
call fcn.14003b8f0
mov eax, r13d
lock xadd dword [rbp + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140012a06
mov rcx, qword [rbp]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
add rbx, 0x18
mov qword [rsp + 0x38], rbx
mov rdi, qword [rsp + 0xb8]
jmp 0x140012a2c
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x38]
call fcn.140009100
mov rbx, qword [rsp + 0x38]
mov esi, dword [rdi - 0x10]
mov ecx, 1
sub ecx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
or eax, ecx
jge 0x140012a55
xor edx, edx
lea rcx, [rsp + 0xb8]
call fcn.140009290
mov rdi, qword [rsp + 0xb8]
lea eax, [rsi + rsi + 2]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rdi
mov r9d, 1
xor r8d, r8d
mov rdx, rbx
mov rcx, qword [rsp + 0x30]
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
test eax, eax
jne 0x140012a9b
lea rcx, [r14 + 0x38]
mov rax, qword [rcx]
mov r9, rbx
lea r8, str.Add_saved_Client__s
mov edx, 0xa
call qword [rax + 0xd0]
jmp 0x140012ab4
lea rcx, [r14 + 0x38]
mov rax, qword [rcx]
mov r9, rbx
lea r8, str.___Add_saved_Client_Failed:__s
xor edx, edx
call qword [rax + 0xd0]
test r12, r12
je 0x140012aca
jmp 0x140012953
call fcn.140009230
int3
call fcn.1400254a0
int3
mov rcx, qword [rsp + 0x30]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
nop
lea rdx, [rdi - 0x18]
mov eax, r13d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140012af3
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, r13d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140012b5d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdi, qword [rsp + 0xc0]
jmp 0x140012b65
mov rax, qword [r14 + 0x38]
lea r8, [0x140063560]
mov edx, 1
lea rcx, [r14 + 0x38]
call qword [rax + 0xd0]
mov r11, qword [r14 + 0x38]
mov r9, qword [rsp + 0xc8]
lea r8, str.Referenced_regkey:__s
mov edx, 0xa
lea rcx, [r14 + 0x38]
call qword [r11 + 0xd0]
jmp 0x140012b65
mov rdi, qword [rsp + 0xc0]
lea rdx, [rdi - 0x18]
mov eax, r13d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140012b82
invalid
ror byte [rax + 0x17], 1
add al, byte [rbx - 0x13748b14]
mov eax, dword [rbx + 0x2174bab]
mov dword [rbp], eax
mov eax, dword [rbx + 0x2174bb3]
add eax, dword [rbp]
mov dword [rbp + 0x2c], eax
mov eax, dword [rbx + 0x2174bb7]
add eax, dword [rbp]
mov dword [rbp + 0x30], eax
mov dword [rbp + 0x14], 0
mov dword [rbp + 0x18], 0
mov dword [rbp + 0x1c], 0
add byte [rcx + 0x45c73045], cl
adc al, 0
add byte [rax], al
add bh, al
sbb byte [r8], r8b
add byte [rax], al
add bh, al
sbb al, 0
add byte [rax], al
add byte [rbx + 0x45ff1445], cl
adc al, 0x66
xor ecx, ecx
mov eax, dword [rbp + 0x14]
inc dword [rbp + 0x14]
xor cx, cx
mov cl, byte [rbx + rax + 0x2174bff]
test cl, cl
je 0x140012c4f
mov eax, dword [rbp + 0x1c]
add word [rbp + 0x1c], cx
add eax, ebx
add eax, 0x2174c13
push rax
mov eax, dword [rbp + 0x2c]
call qword [rax]
test eax, eax
je 0x140012e4f
mov dword [rbp + 0x10], eax
mov eax, dword [rbp + 0x1c]
add eax, ebx
add eax, 0x2174c13
push rax
push qword [rbp + 0x10]
mov eax, dword [rbp + 0x30]
call qword [rax]
test eax, eax
je 0x140012e4f
push rax
mov eax, dword [rbp + 0x14]
inc dword [rbp + 0x14]
xor cx, cx
mov cl, byte [rbx + rax + 0x2174bff]
add word [rbp + 0x1c], cx
mov eax, dword [rbp + 0x18]
inc dword [rbp + 0x18]
mov ecx, 4
mul ecx
pop rcx
mov dword [rbp + rax + 0x34], ecx
mov eax, dword [rbp + 0x14]
xor cx, cx
mov cl, byte [rbx + rax + 0x2174bff]
test cl, cl
jne 0x140012bf4
inc dword [rbp + 0x14]
jmp 0x140012bc1
push 0x105
push 0x40
call qword [rbp + 0x58]
test eax, eax
je 0x140012e4f
mov dword [rbp + 0x68], eax
push 0x105
push 0x40
call qword [rbp + 0x58]
test eax, eax
je 0x140012e4f
mov dword [rbp + 0x6c], eax
push 0
mov eax, dword [rbx + 0x2174bbb]
cmp eax, 0
jne 0x140012c8a
push 0x1a
jmp 0x140012c8c
push 0x24
push qword [rbp + 0x68]
push 0
call qword [rbp + 0x60]
test eax, eax
je 0x140012e4f
mov eax, ebx
add eax, 0x2174ce7
push rax
push qword [rbp + 0x68]
call qword [rbp + 0x64]
test eax, eax
je 0x140012e4f
mov eax, dword [rbx + 0x2174bbb]
cmp eax, 0
jne 0x140012e13
push 0x104
push qword [rbp + 0x6c]
push 0
call qword [rbp + 0x48]
test eax, eax