Function at 0x1000edc2
Capabilities:
Create service
Get common file path
Persist via windows service
Set registry value

Disassembly:
push ebp
lea ebp, [esp - 0x1034]
mov eax, 0x1034
call fcn.10076ab0
push 0xffffffffffffffff
push 0x1016af53
mov eax, dword fs:[0]
push eax
sub esp, 0x4c
mov eax, dword [0x101f1dd0]
xor eax, ebp
mov dword [ebp + 0x1030], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
xor ebx, ebx
lea ecx, [ebp - 0x11]
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 4], ebx
call fcn.100237f8
mov esi, 0x206
push esi
lea eax, [ebp + 0xe2a]
push ebx
push eax
mov byte [ebp - 4], 1
mov word [ebp + 0xe28], bx
call fcn.10076580
push esi
lea eax, [ebp + 0xa1a]
push ebx
push eax
mov word [ebp + 0xa18], bx
call fcn.10076580
push esi
lea eax, [ebp + 0x60a]
push ebx
push eax
mov word [ebp + 0x608], bx
call fcn.10076580
push esi
lea eax, [ebp + 0xc22]
push ebx
push eax
mov word [ebp + 0xc20], bx
call fcn.10076580
add esp, 0x30
lea eax, [ebp + 0xe28]
push eax
push str.ServiceName
lea ecx, [ebp - 0x11]
call fcn.100154e3
lea eax, [ebp + 0xa18]
push eax
push str.ServiceDisplayName
lea ecx, [ebp - 0x11]
call fcn.100154e3
lea eax, [ebp + 0x608]
push eax
push str.ServiceDescription
lea ecx, [ebp - 0x11]
call fcn.100154e3
lea eax, [ebp + 0xc20]
push eax
push str.ServiceDll
lea ecx, [ebp - 0x11]
call fcn.100154e3
lea eax, [ebp + 0xe28]
push eax
call fcn.10076514
test eax, eax
pop ecx
jbe 0x1000f172
push 0x3fe
lea eax, [ebp + 2]
push ebx
push eax
mov word [ebp], bx
call fcn.10076580
add esp, 0xc
lea eax, [ebp - 0x20]
push eax
push 0xf003f
push ebx
push str.SOFTWAREMicrosoftWindows_NTCurrentVersionSvchost
mov edi, reloc.OLEAUT32.dll_SysReAllocString
push edi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, ebx
mov dword [ebp - 0x1c], eax
je 0x1000ef3a
push str.SOFTWAREMicrosoftWindows_NTCurrentVersionSvchost
push str._InstallSvchostService__Open_regedit_failed_:__s
call fcn.100247c2
pop ecx
pop ecx
mov dword [ebp - 0x28], ebx
push 0x101dec04
lea eax, [ebp - 0x28]
push eax
call fcn.1007652a
push esi
lea eax, [ebp + 0x402]
push ebx
push eax
mov word [ebp + 0x400], bx
call fcn.10076580
lea eax, [ebp + 0xe28]
push eax
lea eax, [ebp + 0x400]
push 0x10175610
push eax
call fcn.100048d5
lea eax, [ebp + 0x400]
push eax
call fcn.10076514
add esp, 0x1c
add eax, eax
push eax
lea eax, [ebp + 0x400]
push eax
push 7
push ebx
lea eax, [ebp + 0xe28]
push eax
push dword [ebp - 0x20]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push dword [ebp - 0x20]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push edi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [ebp]
push str.SYSTEMCurrentControlSetServices_
push eax
call fcn.10076a8d
lea eax, [ebp + 0xe28]
push eax
lea eax, [ebp]
push eax
call fcn.10076a63
add esp, 0x10
lea eax, [ebp - 0x34]
push eax
push 0xf003f
push ebx
lea eax, [ebp]
push eax
push edi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, ebx
mov dword [ebp - 0x1c], eax
jne 0x1000f01f
lea eax, [ebp + 0xc20]
push eax
lea eax, [ebp + 0x608]
push eax
lea eax, [ebp + 0xa18]
push eax
lea eax, [ebp + 0xe28]
push eax
lea ecx, [ebp - 0x11]
call fcn.100155c6
push str._InstallSvchostService__Svchost_already_install
call fcn.100247c2
pop ecx
mov dword [ebp - 0x38], ebx
push 0x101dec04
lea eax, [ebp - 0x38]
jmp 0x1000ef34
push 0xf003f
push ebx
push ebx
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
cmp eax, ebx
mov dword [ebp - 0x18], eax
jne 0x1000f07b
lea eax, [ebp - 0x54]
push eax
call fcn.1002014c
pop ecx
cmp dword [eax + 0x18], 8
mov byte [ebp - 4], 2
jb 0x1000f04c
mov eax, dword [eax + 4]
jmp 0x1000f04f
add eax, 4
push eax
push str._InstallSvchostService__OpenSCManager_failed_:__s
call fcn.100247c2
pop ecx
pop ecx
push ebx
push 1
lea ecx, [ebp - 0x54]
mov byte [ebp - 4], 1
call fcn.100017f0
mov dword [ebp - 0x30], ebx
push 0x101dec04
lea eax, [ebp - 0x30]
jmp 0x1000ef34
push esi
lea eax, [ebp + 0x812]
push ebx
push eax
mov word [ebp + 0x810], bx
call fcn.10076580
add esp, 0xc
push 0x104
lea eax, [ebp + 0x810]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
lea eax, [ebp + 0x810]
push str._svchost.exe__k
push eax
call fcn.10076a63
lea eax, [ebp + 0xe28]
push eax
lea eax, [ebp + 0x810]
push eax
call fcn.10076a63
add esp, 0x10
push ebx
push ebx
push ebx
push ebx
push ebx
lea eax, [ebp + 0x810]
push eax
push 1
push 2
push 0x120
push 0xf01ff
push ebx
lea eax, [ebp + 0xe28]
push eax
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CreateServiceW]
cmp eax, ebx
jne 0x1000f124
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._InstallSvchostService__CreateService_is_NULL_code_:__d
push 0x10175610
call fcn.100247c2
add esp, 0xc
mov dword [ebp - 0x24], ebx
push 0x101dec04
lea eax, [ebp - 0x24]
jmp 0x1000ef34
mov esi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
push eax
call esi
push dword [ebp - 0x18]
call esi
lea eax, [ebp + 0xc20]
push eax
lea eax, [ebp + 0x608]
push eax
lea eax, [ebp + 0xa18]
push eax
lea eax, [ebp + 0xe28]
push eax
lea ecx, [ebp - 0x11]
mov dword [ebp - 0x18], ebx
call fcn.100155c6
lea ecx, [ebp - 0x11]
call fcn.1001576d
lea ecx, [ebp - 0x11]
mov byte [ebp - 4], bl
call sym.Plugin.dll_CleanUpPluginSystemManager
or dword [ebp - 4], 0xffffffff
jmp 0x1000f1b5
lea eax, [ebp + 0xc20]
push eax
lea eax, [ebp + 0xa18]
push eax
lea eax, [ebp + 0xe28]
push eax
push str._InstallSvchostService__param_empty___serviceName_:__s_displayName_:__s_dllPathName_:__s
call fcn.100247c2
add esp, 0x10
mov dword [ebp - 0x2c], ebx
push 0x101dec04
lea eax, [ebp - 0x2c]
jmp 0x1000ef34
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push edi
call esi
push ebx
call esi
cmp dword [ebp - 0x18], ebx
je 0x1000f1cf
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
push str._InstallSvchostService__InstallService_End
push 0x10175610
call fcn.100247c2
mov eax, dword [ebp - 0x1c]
pop ecx
pop ecx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x1030]
xor ecx, ebp
call fcn.10075e13
add ebp, 0x1034
leave
ret