Function at 0x140099940
Capabilities:
Create process on windows
Query or enumerate registry value

Disassembly:
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r14
push r15
lea rbp, [rsp - 0x27]
sub rsp, 0xd0
movzx ebx, dl
xor r12d, r12d
mov dword [rbp - 0x69], r12d
xor r8d, r8d
lea rdx, str.Properties
lea rcx, [rbp + 0xf]
call fcn.1400440e0
nop
mov rcx, qword [rbp + 0xf]
test rcx, rcx
je 0x14009a0a7
mov rax, qword [rcx]
mov dword [rsp + 0x20], r12d
xor r9d, r9d
xor r8d, r8d
lea rdx, str.On_Screen_Keyboard
call qword [rax + 0x10]
test eax, eax
je 0x14009a0a7
test bl, bl
je 0x14009a067
mov qword [rbp - 0x41], r12
mov dword [rbp - 0x39], r12d
cmp dword [0x14021c658], 0xb23a8c33
je 0x1400999ee
mov ecx, 0x6c0
call fcn.140111d34
mov qword [rbp + 0x67], rax
test rax, rax
je 0x1400999e2
mov rcx, rax
call fcn.140036570
mov rcx, rax
jmp 0x1400999e5
mov rcx, r12
mov qword [0x140229e08], rcx
jmp 0x1400999f5
mov rcx, qword [0x140229e08]
mov rax, qword [rcx]
call qword [rax + 0x30]
mov qword [rbp - 0x61], rax
mov qword [rbp - 0x29], r12
lea rax, [rbp - 0x29]
mov qword [rsp + 0x20], rax
mov r9d, 0x20019
xor r8d, r8d
lea rdx, str.SOFTWAREMicrosoftWindowsCurrentVersion
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov r14d, 0xffffffff
test eax, eax
jne 0x140099db0
mov eax, r12d
mov rcx, qword [rbp - 0x41]
test rcx, rcx
je 0x140099a49
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rcx, qword [rbp - 0x29]
mov qword [rbp - 0x41], rcx
mov dword [rbp - 0x39], r12d
test eax, eax
jne 0x140099db0
lea rdx, [0x1401acff0]
lea rcx, [rbp - 0x51]
call fcn.14000a4d0
mov dword [rbp - 0x69], 1
mov rcx, qword [rbp - 0x41]
test rcx, rcx
je 0x140099c28
mov dword [rbp + 0x7f], 1
mov dword [rbp + 0x77], r12d
lea rax, [rbp + 0x77]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], r12
lea r9, [rbp + 0x7f]
xor r8d, r8d
lea rdx, str.CommonFilesDir
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x140099c28
mov ecx, dword [rbp + 0x7f]
lea eax, [rcx - 1]
cmp eax, 1
jbe 0x140099ba4
cmp ecx, 4
jne 0x140099c28
mov dword [rbp + 0x67], r12d
mov rcx, qword [rbp - 0x41]
test rcx, rcx
je 0x140099b89
mov dword [rbp - 0x31], 4
mov dword [rbp - 0x59], 0xffffffff
lea rax, [rbp - 0x31]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x67]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x59]
xor r8d, r8d
lea rdx, str.CommonFilesDir
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
je 0x140099b1d
mov dword [rbp + 0x67], r12d
jmp 0x140099b89
mov eax, dword [rbp - 0x59]
cmp eax, 4
je 0x140099b89
mov dword [rbp + 0x67], r12d
cmp eax, 1
jne 0x140099b89
lea r8, str.CommonFilesDir
lea rdx, [rbp - 0x21]
lea rcx, [rbp - 0x41]
call fcn.140040470
nop
mov rax, qword [rbp - 0x21]
cmp dword [rax - 0x10], 0
jle 0x140099b5c
mov rcx, rax
call fcn.140012ff0
mov dword [rbp + 0x67], eax
mov rax, qword [rbp - 0x21]
lea rdx, [rax - 0x18]
mov eax, dword [rdx + 0x10]
cmp eax, 0x7ffffc17
je 0x140099b89
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x140099b7f
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140099b89
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
movsxd rdx, dword [rbp + 0x67]
mov r9d, 0xa
xor r8d, r8d
lea rcx, [rbp - 0x51]
call fcn.14003a5f0
jmp 0x140099c28
mov edi, dword [rbp + 0x77]
inc rdi
shr rdi, 1
lea edx, [rdi + 1]
mov r9b, 1
xor r8d, r8d
lea rcx, [rbp - 0x51]
call fcn.140037200
mov rbx, rax
lea rax, [rbp + 0x77]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
lea r9, [rbp + 0x7f]
xor r8d, r8d
lea rdx, str.CommonFilesDir
mov rcx, qword [rbp - 0x41]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
movsxd rcx, edi
mov word [rbx + rcx*2], r12w
mov rax, qword [rbp - 0x51]
test rax, rax
jne 0x140099bfe
mov edx, r12d
jmp 0x140099c15
mov rdx, rax
movzx ecx, word [rdx]
add rdx, 2
test cx, cx
jne 0x140099c01
sub rdx, rax
sar rdx, 1
dec edx
mov dword [rax - 0x10], edx
mov ecx, dword [rax - 8]
cmp ecx, 0xffffffff
jne 0x140099c28
mov ecx, 1
xchg dword [rax - 8], ecx
lea rdx, [rbp - 0x51]
lea rcx, [rbp - 0x61]
call fcn.140037020
mov dword [rbp - 0x69], r12d
mov rdx, qword [rbp - 0x51]
add rdx, 0xffffffffffffffe8
mov eax, dword [rdx + 0x10]
cmp eax, 0x7ffffc17
je 0x140099c6a
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x140099c60
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140099c6a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
cmp dword [0x14021c658], 0xb23a8c33
je 0x140099ca2
mov ecx, 0x6c0
call fcn.140111d34
mov qword [rbp - 0x11], rax
test rax, rax
je 0x140099c96
mov rcx, rax
call fcn.140036570
mov rcx, rax
jmp 0x140099c99
mov rcx, r12
mov qword [0x140229e08], rcx
jmp 0x140099ca9
mov rcx, qword [0x140229e08]
mov rax, qword [rcx]
mov byte [rsp + 0x30], 1
mov byte [rsp + 0x28], 0
mov byte [rsp + 0x20], 0
mov r9d, r14d
mov r8d, r14d
lea rdx, str.microsoft_shared
call qword [rax + 0x28]
mov rbx, rax
mov qword [rbp - 0x11], rax
lea rdx, [rbp - 0x11]
lea rcx, [rbp - 0x61]
call fcn.14003e590
nop
lea rdx, [rbx - 0x18]
mov eax, dword [rdx + 0x10]
cmp eax, 0x7ffffc17
je 0x140099d0d
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x140099d03
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140099d0d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
cmp dword [0x14021c658], 0xb23a8c33
je 0x140099d45
mov ecx, 0x6c0
call fcn.140111d34
mov qword [rbp - 9], rax
test rax, rax
je 0x140099d39
mov rcx, rax
call fcn.140036570
mov rcx, rax
jmp 0x140099d3c
mov rcx, r12
mov qword [0x140229e08], rcx
jmp 0x140099d4c
mov rcx, qword [0x140229e08]
mov rax, qword [rcx]
mov byte [rsp + 0x30], 1
mov byte [rsp + 0x28], 0
mov byte [rsp + 0x20], 0
mov r9d, r14d
mov r8d, r14d
lea rdx, [0x1401c5c50]
call qword [rax + 0x28]
mov rbx, rax
mov qword [rbp - 9], rax
lea rdx, [rbp - 9]
lea rcx, [rbp - 0x61]
call fcn.14003e590
nop
lea rdx, [rbx - 0x18]
mov eax, dword [rdx + 0x10]
cmp eax, 0x7ffffc17
je 0x140099db0
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x140099da6
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140099db0
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov qword [rbp - 0x19], r12
lea rcx, [rbp - 0x19]
call qword [sym.imp.KERNEL32.dll_Wow64DisableWow64FsRedirection]
lea r8, [0x1401c5ca8]
lea rdx, [rbp - 0x61]
lea rcx, [rbp + 7]
call fcn.14003f3a0
nop
mov dl, 1
mov rcx, qword [rax]
call fcn.140042070
movzx ebx, al
mov rdx, qword [rbp + 7]
add rdx, 0xffffffffffffffe8
mov ecx, dword [rdx + 0x10]
cmp ecx, 0x7ffffc17
je 0x140099e12
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x140099e08
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140099e12
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
xor edx, edx
test bl, bl
je 0x140099fcc
lea rcx, str.IPTip_Main_Window
call qword [sym.imp.USER32.dll_FindWindowW]
test rax, rax
je 0x140099e45
xor r9d, r9d
mov edx, 0x112
mov r8d, 0xf060
mov rcx, rax
call qword [sym.imp.USER32.dll_SendMessageW]
cmp dword [0x14021c658], 0xb23a8c33
je 0x140099e7d
mov ecx, 0x6c0
call fcn.140111d34
mov qword [rbp - 1], rax
test rax, rax
je 0x140099e71
mov rcx, rax
call fcn.140036570
mov rcx, rax
jmp 0x140099e74
mov rcx, r12
mov qword [0x140229e08], rcx
jmp 0x140099e84
mov rcx, qword [0x140229e08]
mov rax, qword [rcx]
lea rdx, str.tabtip.exe
call qword [rax + 0x20]
mov rdi, rax
mov qword [rbp - 1], rax
lea rcx, [rbp - 0x49]
call fcn.14000a680
mov dword [rbp - 0x69], 2
mov rbx, qword [rbp - 0x61]
mov r15d, dword [rbx - 0x10]
add r15d, dword [rdi - 0x10]
mov r9b, 1
xor r8d, r8d
mov edx, r15d
lea rcx, [rbp - 0x49]
call fcn.140037200
mov rsi, rax
movsxd r8, dword [rbx - 0x10]
add r8, r8
mov rdx, rbx
mov rcx, rax
call fcn.1401535f0
movsxd r8, dword [rdi - 0x10]
add r8, r8
movsxd rcx, dword [rbx - 0x10]
lea rcx, [rsi + rcx*2]
mov rdx, rdi
call fcn.1401535f0
mov rax, qword [rbp - 0x49]
cmp r15d, 0xffffffff
jne 0x140099f26
test rax, rax
jne 0x140099f06
mov edx, r12d
jmp 0x140099f31
mov rdx, rax
nop dword [rax]
movzx ecx, word [rdx]
add rdx, 2
test cx, cx
jne 0x140099f10
sub rdx, rax
sar rdx, 1
dec edx
jmp 0x140099f31
movsxd rcx, r15d
mov word [rax + rcx*2], r12w
mov edx, r15d
mov dword [rax - 0x10], edx
mov ecx, dword [rax - 8]
cmp ecx, 0xffffffff
jne 0x140099f44
mov ecx, 1
xchg dword [rax - 8], ecx
mov dword [rsp + 0x28], 1
mov qword [rsp + 0x20], r12
xor r9d, r9d
mov r8, qword [rbp - 0x49]
lea rdx, str.open
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_ShellExecuteW]
nop
mov rdx, qword [rbp - 0x49]
add rdx, 0xffffffffffffffe8
mov eax, dword [rdx + 0x10]
cmp eax, 0x7ffffc17
je 0x140099f99
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x140099f8f
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140099f99
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 1]
add rdx, 0xffffffffffffffe8
mov eax, dword [rdx + 0x10]
cmp eax, 0x7ffffc17
je 0x140099fca
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x140099fc0
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140099fca
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
jmp 0x14009a01b
lea rcx, str.OSKMainClass
call qword [sym.imp.USER32.dll_FindWindowW]
test rax, rax
je 0x140099ff5
xor r9d, r9d
mov edx, 0x112
mov r8d, 0xf060
mov rcx, rax
call qword [sym.imp.USER32.dll_SendMessageW]
mov dword [rsp + 0x28], 1
mov qword [rsp + 0x20], r12
xor r9d, r9d
lea r8, str.osk.exe
lea rdx, str.open
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_ShellExecuteW]
mov rcx, qword [rbp - 0x19]
call qword [sym.imp.KERNEL32.dll_Wow64RevertWow64FsRedirection]
nop
mov rdx, qword [rbp - 0x61]
add rdx, 0xffffffffffffffe8
mov eax, dword [rdx + 0x10]
cmp eax, 0x7ffffc17
je 0x14009a056
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x14009a04c
lock xadd dword [rdx + 0x10], r14d
sub r14d, 1
jg 0x14009a056
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rcx, qword [rbp - 0x41]
test rcx, rcx
je 0x14009a0a7
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x14009a0a7
xor edx, edx
lea rcx, str.IPTip_Main_Window
call qword [sym.imp.USER32.dll_FindWindowW]
test rax, rax
jne 0x14009a08f
xor edx, edx
lea rcx, str.OSKMainClass
call qword [sym.imp.USER32.dll_FindWindowW]
test rax, rax
je 0x14009a0a7
xor r9d, r9d
mov r8d, 0xf060
mov edx, 0x112
mov rcx, rax
call qword [sym.imp.USER32.dll_PostMessageW]
nop
lea rcx, [rbp + 0xf]
call fcn.140044330
add rsp, 0xd0
pop r15
pop r14
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret