Function at 0x10000ec80
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 [0x1000700c8]
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 [0x1000700d8], r13d
jl 0x10001f972
call sub.ntdll.dll_WinSqmIsOptedIn
jmp 0x10000ed05
cmp eax, esi
je 0x10000eea3
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 0x10000eea3
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 0x10000ee97
lea r8, [0x100055450]
mov rdx, r14
lea rcx, [rsp + 0x310]
call fcn.100010340
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 0x10000ee59
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 0x10000ee4e
cmp dword [0x1000700d8], r13d
jl 0x10000ee4e
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 0x10000ed7f
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
nop
lea rcx, [rsp + 0x70]
call fcn.10000f9bc
mov rcx, qword [rsp + 0x70]
cmp rcx, rsi
jne 0x10001f979
call fcn.10000c234
nop
jmp 0x10000eec3
lea r9, [0x100070cf8]
lea r8, [0x100070c78]
lea rdx, [0x100010e54]
lea rcx, [0x100055168]
call fcn.100010e1c
mov r11d, dword [0x100070c9c]
cmp r11d, esi
je 0x10001fa19
mov dl, byte [0x100070ca0]
cmp dl, 4
jb 0x10001f9b0
movabs r13, 0x8001000000000005
test qword [0x100070c88], r13
je 0x10001f9cf
mov rcx, qword [0x100070c90]
mov rax, rcx
and rax, r13
cmp rax, rcx
jne 0x10000ef55
lea rdx, [0x100055178]
mov rcx, qword [0x100070cf8]
call fcn.10000c1f0
mov dl, byte [0x100070ca0]
mov r11d, dword [0x100070c9c]
mov rcx, qword [0x100070c90]
jmp 0x10000ef55
cmp r11d, esi
je 0x10000ef7a
cmp dl, 4
jb 0x10001f9db
movabs rbx, 0x8000000000000200
test qword [0x100070c88], rbx
jne 0x10001f9e9
lea rcx, [0x100070092]
call fcn.10000e5b0
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.10000f970
nop
lea rcx, [rsp + 0x80]
call fcn.10000f8f4
nop
lea rcx, [rsp + 0x60]
call fcn.10000ca5c
nop
lea rcx, [rsp + 0x50]
call fcn.100010e90
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 0x10001fa28
lea rdx, [rsp + 0x100]
lea rcx, str.LOCALAPPDATA
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
cmp eax, esi
je 0x10001fabc
lea rcx, [rsp + 0x80]
call fcn.100010414
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.10000e374
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.10000e374
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 0x10001fb50
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 0x10000f148
lea r8, str.SearchServiceMUT
mov edx, r12d
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_CreateMutexW]
mov r14, rax
mov rcx, qword [0x100070140]
cmp rax, rcx
je 0x10000f120
cmp rcx, rsi
jne 0x10001fb5b
mov qword [0x100070140], r14
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r14d, eax
mov rcx, qword [0x100070140]
cmp rcx, rsi
je 0x10001fb6d
cmp eax, esi
jne 0x10001fb67
mov rcx, qword [rsp + 0x50]
cmp rcx, rsi
je 0x10000f159
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0x60]
cmp rcx, rsi
je 0x10000f16a
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0xc0]
call qword [case.0x10000fb16.0]
mov qword [rsp + 0xc0], rsi
mov rcx, qword [rsp + 0xb8]
call qword [case.0x10000fb16.0]
mov qword [rsp + 0xb8], rsi
mov rcx, qword [rsp + 0xb0]
cmp rcx, rsi
je 0x10000f1aa
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0xa8]
cmp rcx, rsi
je 0x10000f1be
call qword [case.0x10000fb16.0]
nop
mov rcx, rbx
call qword [case.0x10000fb16.0]
nop
mov rax, qword [rsp + 0x550]
mov qword [0x1000700f0], rax
lea rcx, [rsp + 0x50]
call fcn.10000daf8
mov rdi, rax
mov qword [rsp + 0x78], rax
cmp rax, rsi
je 0x10001fdfa
cmp dword [rsp + 0x50], 2
jne 0x10001fdfa
mov ebx, r12d
cmp ebx, dword [rsp + 0x50]
jge 0x10000f235
movsxd rax, ebx
mov rcx, qword [rdi + rax*8]
cmp word [rcx], 0x2f
jne 0x10001fcdf
add rcx, 2
lea rdx, str.Embedding
call qword [sym.imp.msvcrt.dll__wcsicmp]
cmp eax, esi
jne 0x10001fd0a
add ebx, r12d
jmp 0x10000f200
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 0x10001fdd2
lea rdx, [0x100070a80]
lea rcx, [0x100070280]
call fcn.10000f2b0
cmp eax, esi
jl 0x10001fdd2
cmp dword [0x100070c9c], esi
je 0x10000f295
mov al, byte [0x100070ca0]
cmp al, 4
jb 0x10001fd2b
movabs rdx, 0x8000000000000200
test qword [0x100070c88], rdx
jne 0x10001fd39
lea rcx, [0x100070380]
call qword [sym.imp.ADVAPI32.dll_StartServiceCtrlDispatcherW]
nop
jmp 0x10001fd68
mov eax, esi
jmp 0x10000ed05
lea rdx, str.AccessDebugTracer
call sub.KERNEL32.dll_GetProcAddress
cmp rax, rsi
je 0x10000eebb
lea rcx, [0x100070a50]
call rax
nop
jmp 0x10000eebb
cmp dl, sil
je 0x10000ef03
movabs r13, 0x8001000000000005
mov rcx, qword [0x100070c90]
jmp 0x10000ef55
mov rcx, qword [0x100070c90]
jmp 0x10000ef55
cmp dl, sil
je 0x10000ef63
jmp 0x10000ef7a
mov rax, rcx
and rax, rbx
cmp rax, rcx
jne 0x10000ef7a
call qword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov r8d, eax
lea rdx, [0x100056338]
mov rcx, qword [0x100070cf8]
call fcn.10004115c
jmp 0x10000ef7a
movabs r13, 0x8001000000000005
jmp 0x10000ef7a
mov r15d, r12d
mov rcx, qword [rsp + 0x50]
cmp rcx, rsi
je 0x10001fa3c
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0x60]
cmp rcx, rsi
je 0x10001fa4d
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0xc0]
call qword [case.0x10000fb16.0]
mov qword [rsp + 0xc0], rsi
mov rcx, qword [rsp + 0xb8]
call qword [case.0x10000fb16.0]
mov qword [rsp + 0xb8], rsi
mov rcx, qword [rsp + 0xb0]
cmp rcx, rsi
je 0x10001fa8d
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0xa8]
cmp rcx, rsi
je 0x10001faa1
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0x68]
call qword [case.0x10000fb16.0]
nop
movabs rbx, 0x8000000000000200
jmp 0x10001fe5a
mov r15d, r12d
mov rcx, qword [rsp + 0x50]
cmp rcx, rsi
je 0x10001fad0
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0x60]
cmp rcx, rsi
je 0x10001fae1
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0xc0]
call qword [case.0x10000fb16.0]
mov qword [rsp + 0xc0], rsi
mov rcx, qword [rsp + 0xb8]
call qword [case.0x10000fb16.0]
mov qword [rsp + 0xb8], rsi
mov rcx, qword [rsp + 0xb0]
cmp rcx, rsi
je 0x10001fb21
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0xa8]
cmp rcx, rsi
je 0x10001fb35
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0x68]
call qword [case.0x10000fb16.0]
nop
movabs rbx, 0x8000000000000200
jmp 0x10001fe5a
call fcn.10003ce1c
nop
jmp 0x10000f0c2
call qword [sym.imp.KERNEL32.dll_CloseHandle]
nop
jmp 0x10000f120
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [0x100070140], rsi
cmp r14d, 0xb7
je 0x10001fc1d
mov r15d, r12d
mov rcx, qword [rsp + 0x50]
cmp rcx, rsi
je 0x10001fb95
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0x60]
cmp rcx, rsi
je 0x10001fba6
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0xc0]
call qword [case.0x10000fb16.0]
mov qword [rsp + 0xc0], rsi
mov rcx, qword [rsp + 0xb8]
call qword [case.0x10000fb16.0]
mov qword [rsp + 0xb8], rsi
mov rcx, qword [rsp + 0xb0]
cmp rcx, rsi
je 0x10001fbe6
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0xa8]
cmp rcx, rsi
je 0x10001fbfa
call qword [case.0x10000fb16.0]
nop
mov rcx, rbx
call qword [case.0x10000fb16.0]
nop
movabs rbx, 0x8000000000000200
movabs r13, 0x8001000000000005
jmp 0x10001fe5a
cmp r13d, 0xe
jne 0x10001fcc4
lea r15d, [r13 - 0xc]
mov rcx, qword [rsp + 0x50]
cmp rcx, rsi
je 0x10001fc3c
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0x60]
cmp rcx, rsi
je 0x10001fc4d
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0xc0]
call qword [case.0x10000fb16.0]
mov qword [rsp + 0xc0], rsi
mov rcx, qword [rsp + 0xb8]
call qword [case.0x10000fb16.0]
mov qword [rsp + 0xb8], rsi
mov rcx, qword [rsp + 0xb0]
cmp rcx, rsi
je 0x10001fc8d
call qword [case.0x10000fb16.0]
nop
mov rcx, qword [rsp + 0xa8]
cmp rcx, rsi
je 0x10001fca1
call qword [case.0x10000fb16.0]
nop
mov rcx, rbx
call qword [case.0x10000fb16.0]
nop
movabs rbx, 0x8000000000000200
movabs r13, 0x8001000000000005
jmp 0x10001fe5a
mov ecx, 0x7d0
call qword [sym.imp.KERNEL32.dll_Sleep]
add r13d, r12d
lea rax, [rsp + 0xd0]
jmp 0x10000f0ef
cmp word [rcx], 0x2d
je 0x10000f217
mov r15d, r12d
mov dword [rsp + 0x48], r12d
movabs rbx, 0x8000000000000200
movabs r13, 0x8001000000000005
jmp 0x10001fe5a
mov r15d, r12d
mov dword [rsp + 0x48], r12d
movabs rbx, 0x8000000000000200
movabs r13, 0x8001000000000005
jmp 0x10001fe5a
cmp al, sil
je 0x10000f27e
jmp 0x10000f295
mov rcx, qword [0x100070c90]
mov rax, rcx
and rax, rdx
cmp rax, rcx
jne 0x10000f295
lea rdx, [0x100056378]
mov rcx, qword [0x100070cf8]
call fcn.10000c1f0
nop
jmp 0x10000f295
cmp eax, esi
je 0x10001fd95
mov rcx, qword [0x1000703a0]
cmp rcx, rsi
je 0x10001fd95
or edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov rcx, qword [0x1000703a0]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [0x1000703a0], rsi
cmp dword [0x1000700d8], 0x7d6
jl 0x10001fdb2
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 0x10001fe5a
mov r15d, eax
mov dword [rsp + 0x48], eax
cmp ebx, esi
jl 0x10001fde4
call qword [sym.imp.ole32.dll_CoUninitialize]
nop
movabs rbx, 0x8000000000000200
movabs r13, 0x8001000000000005
jmp 0x10001fe5a
mov r15d, r12d
mov dword [rsp + 0x48], r12d
movabs rbx, 0x8000000000000200
movabs r13, 0x8001000000000005
jmp 0x10001fe5a
call qword [sym.imp.MSSRCH.DLL_public:_static_int___cdecl_CSearchServiceObj::Cleanup_void_]
mov r11d, dword [0x100070c9c]
cmp r11d, esi
je 0x10001ff13
mov dl, byte [0x100070ca0]
cmp dl, 4
jae 0x10001fe89
cmp dl, sil
je 0x10001fe89
mov rcx, qword [0x100070c90]
jmp 0x10001fedd
test qword [0x100070c88], rbx
je 0x10001fed6
mov rcx, qword [0x100070c90]
mov rax, rcx
and rax, rbx
cmp rax, rcx
jne 0x10001fedd
call qword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov r8d, eax
lea rdx, [0x100056348]
mov rcx, qword [0x100070cf8]
call fcn.10004115c
mov dl, byte [0x100070ca0]
mov r11d, dword [0x100070c9c]
mov rcx, qword [0x100070c90]
jmp 0x10001fedd
mov rcx, qword [0x100070c90]
cmp r11d, esi
je 0x10001ff13
cmp dl, 4
jae 0x10001feec
cmp dl, sil
jne 0x10001ff13
test qword [0x100070c88], r13
je 0x10001ff13
mov rax, rcx
and rax, r13
cmp rax, rcx
jne 0x10001ff13
lea rdx, [0x100056998]
mov rcx, qword [0x100070cf8]
call fcn.10000c1f0
lea rcx, [0x100070cf8]
call fcn.100033a50
nop
cmp rdi, rsi
je 0x10001ff2e
mov rcx, rdi
call qword [case.0x10000fb16.0]
mov eax, r15d
mov rcx, qword [rsp + 0x518]
xor rcx, rsp
call fcn.100001250
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