Function at 0x10000ef60
Capabilities:
Check mutex on windows
Get common file path
Query or enumerate registry key
Query or enumerate registry value
Set environment variable

Disassembly:
mov rax, rsp
mov qword [rax + 8], rcx
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x520
mov qword [rsp + 0xf0], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov rax, qword [0x10006e0c8]
xor rax, rsp
mov qword [rsp + 0x518], rax
xor esi, esi
mov r15d, esi
mov dword [rsp + 0x48], esi
xor r9d, r9d
xor r8d, r8d
lea r12d, [rsi + 1]
mov edx, r12d
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_HeapSetInformation]
or ecx, 0xffffffff
call sub.IMM32.dll_ImmDisableIME
mov rdi, rsi
mov qword [rsp + 0x78], rsi
mov r13d, 0x7d6
cmp dword [0x10006e0d8], r13d
jl 0x10001e586
call sub.ntdll.dll_WinSqmIsOptedIn
jmp 0x10000efe5
cmp eax, esi
je 0x10000f183
lea rax, [rsp + 0x60]
mov qword [rsp + 0x20], rax
mov r9d, 9
xor r8d, r8d
lea rdx, str.SoftwareMicrosoftWindows_SearchGatherWindowsSystemIndexProtocols
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, esi
jne 0x10000f183
mov r14d, 0xff
mov dword [rsp + 0x50], r14d
mov ebx, esi
mov qword [rsp + 0x38], rsi
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x20], rsi
lea r9, [rsp + 0x50]
lea r8, [rsp + 0x310]
xor edx, edx
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
cmp eax, esi
jne 0x10000f177
lea r8, [0x100054450]
mov rdx, r14
lea rcx, [rsp + 0x310]
call fcn.100010620
lea r11, [rsp + 0x70]
mov qword [rsp + 0x20], r11
mov r9d, r12d
xor r8d, r8d
lea rdx, [rsp + 0x310]
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, esi
jne 0x10000f139
mov dword [rsp + 0x68], r14d
mov dword [rsp + 0x58], r12d
lea rax, [rsp + 0x68]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x100]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x58]
xor r8d, r8d
lea rdx, str.ProgIdHandler
mov rcx, qword [rsp + 0x70]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
cmp eax, esi
jne 0x10000f12e
cmp dword [0x10006e0d8], r13d
jl 0x10000f12e
lea rax, [rsp + 0x100]
lea rcx, str._null_
cmp word [rsp + 0x100], si
cmove rax, rcx
mov qword [rsp + 0xd8], rax
mov dword [rsp + 0xd0], 2
lea r9, [rsp + 0xd0]
mov r8d, r12d
mov edx, 0x10a1
xor ecx, ecx
call sub.ntdll.dll_WinSqmAddToStream
mov rcx, qword [rsp + 0x70]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [rsp + 0x50], r14d
add ebx, r12d
mov qword [rsp + 0x38], rsi
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x20], rsi
lea r9, [rsp + 0x50]
lea r8, [rsp + 0x310]
mov edx, ebx
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
cmp eax, esi
je 0x10000f05f
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
nop
lea rcx, [rsp + 0x70]
call fcn.10000fc90
mov rcx, qword [rsp + 0x70]
cmp rcx, rsi
jne 0x10001e58d
call fcn.10000c374
nop
jmp 0x10000f1a3
lea r9, [0x10006ecf8]
lea r8, [0x10006ec78]
lea rdx, [0x100011140]
lea rcx, [0x100054168]
call fcn.100011108
mov r11d, dword [0x10006ec9c]
cmp r11d, esi
je 0x10001e62d
mov dl, byte [0x10006eca0]
cmp dl, 4
jb 0x10001e5c4
movabs r13, 0x8001000000000005
test qword [0x10006ec88], r13
je 0x10001e5e3
mov rcx, qword [0x10006ec90]
mov rax, rcx
and rax, r13
cmp rax, rcx
jne 0x10000f235
lea rdx, [0x100054178]
mov rcx, qword [0x10006ecf8]
call fcn.10000c330
mov dl, byte [0x10006eca0]
mov r11d, dword [0x10006ec9c]
mov rcx, qword [0x10006ec90]
jmp 0x10000f235
cmp r11d, esi
je 0x10000f25a
cmp dl, 4
jb 0x10001e5ef
movabs rbx, 0x8000000000000200
test qword [0x10006ec88], rbx
jne 0x10001e5fd
lea rcx, [0x10006e092]
call fcn.10000e824
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov rcx, rax
mov edx, 0x20
call qword [sym.imp.KERNEL32.dll_SetPriorityClass]
nop
mov qword [rsp + 0x68], rsi
lea rcx, [rsp + 0x68]
call fcn.10000fc40
nop
lea rcx, [rsp + 0x80]
call fcn.10000fbc4
nop
lea rcx, [rsp + 0x60]
call fcn.10000cbb8
nop
lea rcx, [rsp + 0x50]
call fcn.100011178
nop
lea rax, [rsp + 0x100]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
mov edx, 0x801c
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetFolderPathW]
cmp eax, esi
jl 0x10001e63c
lea rdx, [rsp + 0x100]
lea rcx, str.LOCALAPPDATA
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
cmp eax, esi
je 0x10001e6d0
lea rcx, [rsp + 0x80]
call fcn.1000106f4
mov byte [rsp + 0x40], sil
mov ebx, 0xc0100000
mov dword [rsp + 0x58], ebx
mov rax, qword [rsp + 0x60]
mov qword [rsp + 0x70], rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x58]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x70]
mov r8d, r12d
mov edx, r12d
lea rcx, [rsp + 0x68]
call fcn.10000e5e0
mov byte [rsp + 0x40], sil
mov dword [rsp + 0x58], ebx
mov rax, qword [rsp + 0x50]
mov qword [rsp + 0x70], rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x58]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x70]
mov r8d, r12d
mov edx, r12d
lea rcx, [rsp + 0x68]
call fcn.10000e5e0
xor r9d, r9d
mov rbx, qword [rsp + 0x68]
mov r8, rbx
mov edx, r12d
lea rcx, [rsp + 0x80]
call qword [sym.imp.ADVAPI32.dll_SetSecurityDescriptorDacl]
cmp eax, esi
je 0x10001e764
mov dword [rsp + 0xd0], 0x18
lea rax, [rsp + 0x80]
mov qword [rsp + 0xd8], rax
mov dword [rsp + 0xe0], esi
lea rax, [rsp + 0xd0]
mov r13d, esi
cmp r13d, 0xf
jae 0x10000f428
lea r8, str.SearchServiceMUT
mov edx, r12d
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_CreateMutexW]
mov r14, rax
mov rcx, qword [0x10006e140]
cmp rax, rcx
je 0x10000f400
cmp rcx, rsi
jne 0x10001e76f
mov qword [0x10006e140], r14
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r14d, eax
mov rcx, qword [0x10006e140]
cmp rcx, rsi
je 0x10001e781
cmp eax, esi
jne 0x10001e77b
mov rcx, qword [rsp + 0x50]
cmp rcx, rsi
je 0x10000f439
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0x60]
cmp rcx, rsi
je 0x10000f44a
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0xc0]
call qword [case.0x10000fdea.0]
mov qword [rsp + 0xc0], rsi
mov rcx, qword [rsp + 0xb8]
call qword [case.0x10000fdea.0]
mov qword [rsp + 0xb8], rsi
mov rcx, qword [rsp + 0xb0]
cmp rcx, rsi
je 0x10000f48a
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0xa8]
cmp rcx, rsi
je 0x10000f49e
call qword [case.0x10000fdea.0]
nop
mov rcx, rbx
call qword [case.0x10000fdea.0]
nop
mov rax, qword [rsp + 0x550]
mov qword [0x10006e0f0], rax
lea rcx, [rsp + 0x50]
call fcn.10000dd60
mov rdi, rax
mov qword [rsp + 0x78], rax
cmp rax, rsi
je 0x10001ea0e
cmp dword [rsp + 0x50], 2
jne 0x10001ea0e
mov ebx, r12d
cmp ebx, dword [rsp + 0x50]
jge 0x10000f515
movsxd rax, ebx
mov rcx, qword [rdi + rax*8]
cmp word [rcx], 0x2f
jne 0x10001e8f3
add rcx, 2
lea rdx, str.Embedding
call qword [sym.imp.msvcrt.dll__wcsicmp]
cmp eax, esi
jne 0x10001e91e
add ebx, r12d
jmp 0x10000f4e0
xor edx, edx
xor ecx, ecx
call qword [sym.imp.ole32.dll_CoInitializeEx]
mov ebx, eax
mov dword [rsp + 0x58], eax
cmp eax, esi
jl 0x10001e9e6
lea rdx, [0x10006ea80]
lea rcx, [0x10006e280]
call fcn.10000f590
cmp eax, esi
jl 0x10001e9e6
cmp dword [0x10006ec9c], esi
je 0x10000f575
mov al, byte [0x10006eca0]
cmp al, 4
jb 0x10001e93f
movabs rdx, 0x8000000000000200
test qword [0x10006ec88], rdx
jne 0x10001e94d
lea rcx, [0x10006e380]
call qword [sym.imp.ADVAPI32.dll_StartServiceCtrlDispatcherW]
nop
jmp 0x10001e97c
mov eax, esi
jmp 0x10000efe5
lea rdx, str.AccessDebugTracer
call sub.KERNEL32.dll_GetProcAddress
cmp rax, rsi
je 0x10000f19b
lea rcx, [0x10006ea50]
call rax
nop
jmp 0x10000f19b
cmp dl, sil
je 0x10000f1e3
movabs r13, 0x8001000000000005
mov rcx, qword [0x10006ec90]
jmp 0x10000f235
mov rcx, qword [0x10006ec90]
jmp 0x10000f235
cmp dl, sil
je 0x10000f243
jmp 0x10000f25a
mov rax, rcx
and rax, rbx
cmp rax, rcx
jne 0x10000f25a
call qword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov r8d, eax
lea rdx, [0x100055348]
mov rcx, qword [0x10006ecf8]
call fcn.10003fa04
jmp 0x10000f25a
movabs r13, 0x8001000000000005
jmp 0x10000f25a
mov r15d, r12d
mov rcx, qword [rsp + 0x50]
cmp rcx, rsi
je 0x10001e650
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0x60]
cmp rcx, rsi
je 0x10001e661
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0xc0]
call qword [case.0x10000fdea.0]
mov qword [rsp + 0xc0], rsi
mov rcx, qword [rsp + 0xb8]
call qword [case.0x10000fdea.0]
mov qword [rsp + 0xb8], rsi
mov rcx, qword [rsp + 0xb0]
cmp rcx, rsi
je 0x10001e6a1
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0xa8]
cmp rcx, rsi
je 0x10001e6b5
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0x68]
call qword [case.0x10000fdea.0]
nop
movabs rbx, 0x8000000000000200
jmp 0x10001ea6e
mov r15d, r12d
mov rcx, qword [rsp + 0x50]
cmp rcx, rsi
je 0x10001e6e4
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0x60]
cmp rcx, rsi
je 0x10001e6f5
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0xc0]
call qword [case.0x10000fdea.0]
mov qword [rsp + 0xc0], rsi
mov rcx, qword [rsp + 0xb8]
call qword [case.0x10000fdea.0]
mov qword [rsp + 0xb8], rsi
mov rcx, qword [rsp + 0xb0]
cmp rcx, rsi
je 0x10001e735
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0xa8]
cmp rcx, rsi
je 0x10001e749
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0x68]
call qword [case.0x10000fdea.0]
nop
movabs rbx, 0x8000000000000200
jmp 0x10001ea6e
call fcn.10003b4b4
nop
jmp 0x10000f3a2
call qword [sym.imp.KERNEL32.dll_CloseHandle]
nop
jmp 0x10000f400
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [0x10006e140], rsi
cmp r14d, 0xb7
je 0x10001e831
mov r15d, r12d
mov rcx, qword [rsp + 0x50]
cmp rcx, rsi
je 0x10001e7a9
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0x60]
cmp rcx, rsi
je 0x10001e7ba
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0xc0]
call qword [case.0x10000fdea.0]
mov qword [rsp + 0xc0], rsi
mov rcx, qword [rsp + 0xb8]
call qword [case.0x10000fdea.0]
mov qword [rsp + 0xb8], rsi
mov rcx, qword [rsp + 0xb0]
cmp rcx, rsi
je 0x10001e7fa
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0xa8]
cmp rcx, rsi
je 0x10001e80e
call qword [case.0x10000fdea.0]
nop
mov rcx, rbx
call qword [case.0x10000fdea.0]
nop
movabs rbx, 0x8000000000000200
movabs r13, 0x8001000000000005
jmp 0x10001ea6e
cmp r13d, 0xe
jne 0x10001e8d8
lea r15d, [r13 - 0xc]
mov rcx, qword [rsp + 0x50]
cmp rcx, rsi
je 0x10001e850
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0x60]
cmp rcx, rsi
je 0x10001e861
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0xc0]
call qword [case.0x10000fdea.0]
mov qword [rsp + 0xc0], rsi
mov rcx, qword [rsp + 0xb8]
call qword [case.0x10000fdea.0]
mov qword [rsp + 0xb8], rsi
mov rcx, qword [rsp + 0xb0]
cmp rcx, rsi
je 0x10001e8a1
call qword [case.0x10000fdea.0]
nop
mov rcx, qword [rsp + 0xa8]
cmp rcx, rsi
je 0x10001e8b5
call qword [case.0x10000fdea.0]
nop
mov rcx, rbx
call qword [case.0x10000fdea.0]
nop
movabs rbx, 0x8000000000000200
movabs r13, 0x8001000000000005
jmp 0x10001ea6e
mov ecx, 0x7d0
call qword [sym.imp.KERNEL32.dll_Sleep]
add r13d, r12d
lea rax, [rsp + 0xd0]
jmp 0x10000f3cf
cmp word [rcx], 0x2d
je 0x10000f4f7
mov r15d, r12d
mov dword [rsp + 0x48], r12d
movabs rbx, 0x8000000000000200
movabs r13, 0x8001000000000005
jmp 0x10001ea6e
mov r15d, r12d
mov dword [rsp + 0x48], r12d
movabs rbx, 0x8000000000000200
movabs r13, 0x8001000000000005
jmp 0x10001ea6e
cmp al, sil
je 0x10000f55e
jmp 0x10000f575
mov rcx, qword [0x10006ec90]
mov rax, rcx
and rax, rdx
cmp rax, rcx
jne 0x10000f575
lea rdx, [0x100055388]
mov rcx, qword [0x10006ecf8]
call fcn.10000c330
nop
jmp 0x10000f575
cmp eax, esi
je 0x10001e9a9
mov rcx, qword [0x10006e3a0]
cmp rcx, rsi
je 0x10001e9a9
or edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov rcx, qword [0x10006e3a0]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [0x10006e3a0], rsi
cmp dword [0x10006e0d8], 0x7d6
jl 0x10001e9c6
mov edx, 0xb86
xor ecx, ecx
lea r8d, [rcx + 3]
call sub.ntdll.dll_WinSqmSetDWORD
nop
call qword [sym.imp.ole32.dll_CoUninitialize]
nop
movabs rbx, 0x8000000000000200
movabs r13, 0x8001000000000005
jmp 0x10001ea6e
mov r15d, eax
mov dword [rsp + 0x48], eax
cmp ebx, esi
jl 0x10001e9f8
call qword [sym.imp.ole32.dll_CoUninitialize]
nop
movabs rbx, 0x8000000000000200
movabs r13, 0x8001000000000005
jmp 0x10001ea6e
mov r15d, r12d
mov dword [rsp + 0x48], r12d
movabs rbx, 0x8000000000000200
movabs r13, 0x8001000000000005
jmp 0x10001ea6e
call qword [sym.imp.MSSRCH.DLL_public:_static_int___cdecl_CSearchServiceObj::Cleanup_void_]
mov r11d, dword [0x10006ec9c]
cmp r11d, esi
je 0x10001eb27
mov dl, byte [0x10006eca0]
cmp dl, 4
jae 0x10001ea9d
cmp dl, sil
je 0x10001ea9d
mov rcx, qword [0x10006ec90]
jmp 0x10001eaf1
test qword [0x10006ec88], rbx
je 0x10001eaea
mov rcx, qword [0x10006ec90]
mov rax, rcx
and rax, rbx
cmp rax, rcx
jne 0x10001eaf1
call qword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov r8d, eax
lea rdx, [0x100055358]
mov rcx, qword [0x10006ecf8]
call fcn.10003fa04
mov dl, byte [0x10006eca0]
mov r11d, dword [0x10006ec9c]
mov rcx, qword [0x10006ec90]
jmp 0x10001eaf1
mov rcx, qword [0x10006ec90]
cmp r11d, esi
je 0x10001eb27
cmp dl, 4
jae 0x10001eb00
cmp dl, sil
jne 0x10001eb27
test qword [0x10006ec88], r13
je 0x10001eb27
mov rax, rcx
and rax, r13
cmp rax, rcx
jne 0x10001eb27
lea rdx, [0x1000559a8]
mov rcx, qword [0x10006ecf8]
call fcn.10000c330
lea rcx, [0x10006ecf8]
call fcn.1000320e0
nop
cmp rdi, rsi
je 0x10001eb42
mov rcx, rdi
call qword [case.0x10000fdea.0]
mov eax, r15d
mov rcx, qword [rsp + 0x518]
xor rcx, rsp
call fcn.100001670
lea r11, [rsp + 0x520]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret