Function at 0x1400bcfa0
Capabilities:
Check if file exists
Create process on windows
Get common file path
Get file attributes
Get program files directory
Modify service
Query or enumerate registry value
Query service status

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
mov qword [rsp + 0x18], rdi
mov qword [rsp + 0x20], r14
push rbp
lea rbp, [rsp - 0x880]
sub rsp, 0x980
mov rax, qword [0x140173040]
xor rax, rsp
mov qword [rbp + 0x870], rax
xor edx, edx
mov r8d, 0x7fe
lea rcx, [rbp + 0x72]
call fcn.14012ce40
call fcn.1400d6390
xor r14d, r14d
test al, al
je 0x1400bd133
call fcn.1400bcf00
test al, al
jne 0x1400bd710
xor edx, edx
xor ecx, ecx
lea r8d, [r14 + 1]
call qword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov rdi, rax
test rax, rax
je 0x1400bd0a3
lea r8d, [r14 + 2]
lea rdx, str.ProcessGovernor
mov rcx, rax
call qword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov rsi, rax
test rax, rax
jne 0x1400bd044
mov rcx, rdi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
jmp 0x1400bd0a3
mov qword [rsp + 0x50], r14
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x40], r14
mov qword [rsp + 0x38], r14
mov qword [rsp + 0x30], r14
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x20], r14
mov edx, 0xffffffff
mov r9d, edx
mov r8d, 2
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_ChangeServiceConfigW]
mov ebx, eax
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, rdi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
test ebx, ebx
je 0x1400bd0a3
call fcn.1400bcf00
test al, al
jne 0x1400bd710
call fcn.1400d6390
test al, al
je 0x1400bd1a9
xor edx, edx
xor ecx, ecx
lea r8d, [rdx + 5]
call qword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov rbx, rax
test rax, rax
je 0x1400bd1a9
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp - 0x28], xmm0
mov qword [rbp - 0x18], rax
mov dword [rbp - 0x10], eax
lea r8d, [rax + 4]
lea rdx, str.ProcessGovernor
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov rdi, rax
test rax, rax
je 0x1400bd1a0
lea rdx, [rbp - 0x28]
mov rcx, rax
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
test eax, eax
je 0x1400bd197
mov ecx, dword [rbp - 0x24]
lea eax, [rcx - 2]
test eax, 0xfffffffc
jne 0x1400bd197
cmp ecx, 3
je 0x1400bd197
mov rcx, rdi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
xorps xmm1, xmm1
movdqu xmmword [rbp - 0x78], xmm1
mov qword [rbp - 0x68], r14
mov word [rbp + 0x70], r14w
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov rcx, rax
mov r8d, 0x3fe
lea rdx, [rbp + 0x70]
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x1400bd1de
lea rcx, [rbp + 0x70]
mov rax, 0xffffffffffffffff
nop
inc rax
cmp word [rcx + rax*2], 0
jne 0x1400bd170
dec eax
movsxd rcx, eax
test eax, eax
jle 0x1400bd1de
cmp word [rbp + rcx*2 + 0x70], 0x5c
je 0x1400bd1d6
dec eax
dec rcx
test rcx, rcx
jg 0x1400bd183
jmp 0x1400bd1de
mov rcx, rdi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
xor r8d, r8d
lea rdx, str.start_ProcessGovernor
lea rcx, str.net.exe
call fcn.14007e250
test rax, rax
je 0x1400bd710
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x1400bd710
cdqe
mov word [rbp + rax*2 + 0x70], r14w
lea rcx, [rbp + 0x70]
sub rcx, 2
lea rcx, [rcx + 2]
cmp word [rcx], 0
jne 0x1400bd1e6
movups xmm0, xmmword [str.processgovernor.exe]
movups xmmword [rcx], xmm0
movups xmm1, xmmword [0x14014eca0]
movups xmmword [rcx + 0x10], xmm1
movsd xmm0, qword [0x14014ecb0]
movsd qword [rcx + 0x20], xmm0
movzx eax, word [0x14014ecb8]
mov word [rcx + 0x28], ax
lea rdx, [rbp + 0x70]
lea rcx, [rsp + 0x60]
call fcn.14003f460
nop
mov rax, qword [rbp - 0x70]
cmp rax, qword [rbp - 0x68]
je 0x1400bd24a
lea rdx, [rsp + 0x60]
mov rcx, rax
call fcn.14003f4f0
add qword [rbp - 0x70], 8
jmp 0x1400bd25c
lea r8, [rsp + 0x60]
mov rdx, rax
lea rcx, [rbp - 0x78]
call fcn.1400482c0
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400bd27d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov word [rbp + 0x70], r14w
xor r9d, r9d
lea r8d, [r9 + 0x26]
lea rdx, [rbp + 0x70]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
cmp word [rbp + 0x70], 0
je 0x1400bd313
mov qword [rbp - 0x48], r14
lea rcx, [rbp - 0x48]
call fcn.1400055e0
nop
lea r9, str.process_lassoprocessgovernor.exe
lea r8, [rbp + 0x70]
lea rdx, [0x140146d78]
lea rcx, [rbp - 0x48]
call fcn.140005d70
mov rax, qword [rbp - 0x70]
cmp rax, qword [rbp - 0x68]
je 0x1400bd2e2
lea rdx, [rbp - 0x48]
mov rcx, rax
call fcn.14003f4f0
add qword [rbp - 0x70], 8
jmp 0x1400bd2f3
lea r8, [rbp - 0x48]
mov rdx, rax
lea rcx, [rbp - 0x78]
call fcn.1400482c0
nop
mov rdx, qword [rbp - 0x48]
add rdx, 0xffffffffffffffe8
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400bd313
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov word [rbp + 0x70], r14w
xor r9d, r9d
lea r8d, [r9 + 0x26]
lea rdx, [rbp + 0x70]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
cmp word [rbp + 0x70], 0
je 0x1400bd3a9
mov qword [rbp - 0x40], r14
lea rcx, [rbp - 0x40]
call fcn.1400055e0
nop
lea r9, str.cpubalanceprocessgovernor.exe
lea r8, [rbp + 0x70]
lea rdx, [0x140146d78]
lea rcx, [rbp - 0x40]
call fcn.140005d70
mov rax, qword [rbp - 0x70]
cmp rax, qword [rbp - 0x68]
je 0x1400bd378
lea rdx, [rbp - 0x40]
mov rcx, rax
call fcn.14003f4f0
add qword [rbp - 0x70], 8
jmp 0x1400bd389
lea r8, [rbp - 0x40]
mov rdx, rax
lea rcx, [rbp - 0x78]
call fcn.1400482c0
nop
mov rdx, qword [rbp - 0x40]
add rdx, 0xffffffffffffffe8
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400bd3a9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov word [rbp + 0x70], r14w
lea rax, [rsp + 0x68]
mov qword [rsp + 0x20], rax
mov r9d, 1
xor r8d, r8d
lea rdx, str.SOFTWAREProcessLasso
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x1400bd4ae
mov dword [rbp - 0x30], 0x400
mov dword [rbp - 0x2c], 1
lea rax, [rbp - 0x30]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x70]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x2c]
xor r8d, r8d
lea rdx, str.Install_Dir
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov rcx, qword [rsp + 0x68]
test eax, eax
je 0x1400bd42a
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x1400bd4ae
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp word [rbp + 0x70], 0
je 0x1400bd4ae
mov qword [rbp - 0x38], r14
lea rcx, [rbp - 0x38]
call fcn.1400055e0
nop
lea r9, [0x140147560]
lea r8, [rbp + 0x70]
lea rdx, [0x140146d78]
lea rcx, [rbp - 0x38]
call fcn.140005d70
mov rax, qword [rbp - 0x70]
cmp rax, qword [rbp - 0x68]
je 0x1400bd47d
lea rdx, [rbp - 0x38]
mov rcx, rax
call fcn.14003f4f0
add qword [rbp - 0x70], 8
jmp 0x1400bd48e
lea r8, [rbp - 0x38]
mov rdx, rax
lea rcx, [rbp - 0x78]
call fcn.1400482c0
nop
mov rdx, qword [rbp - 0x38]
add rdx, 0xffffffffffffffe8
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400bd4ae
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov qword [rbp - 0x60], r14
lea rcx, [rbp - 0x60]
call fcn.1400055e0
nop
mov rbx, qword [rbp - 0x78]
mov rdi, qword [rbp - 0x70]
cmp rbx, rdi
je 0x1400bd5a1
nop dword [rax]
mov qword [rbp - 0x58], r14
mov rdx, rbx
lea rcx, [rbp - 0x58]
call fcn.14003f4f0
nop
mov rax, qword [rbp - 0x58]
cmp dword [rax - 0x10], 0
je 0x1400bd4fd
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
mov rax, qword [rbp - 0x58]
jne 0x1400bd524
lea rdx, [rax - 0x18]
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400bd519
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
add rbx, 8
cmp rbx, rdi
jne 0x1400bd4d0
jmp 0x1400bd5a1
lea rcx, [rax - 0x18]
mov rbx, qword [rbp - 0x60]
add rbx, 0xffffffffffffffe8
cmp rcx, rbx
je 0x1400bd585
cmp dword [rbx + 0x10], 0
jl 0x1400bd571
mov rdx, qword [rbx]
cmp qword [rcx], rdx
jne 0x1400bd571
call fcn.140041570
mov rdi, rax
mov ecx, 0xffffffff
lock xadd dword [rbx + 0x10], ecx
sub ecx, 1
jg 0x1400bd567
mov rcx, qword [rbx]
mov r8, qword [rcx]
mov rdx, rbx
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
lea rax, [rdi + 0x18]
mov qword [rbp - 0x60], rax
jmp 0x1400bd581
mov r8d, dword [rax - 0x10]
mov rdx, rax
lea rcx, [rbp - 0x60]
call fcn.140005a90
mov rax, qword [rbp - 0x58]
lea rdx, [rax - 0x18]
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400bd5a1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rbp - 0x60]
cmp dword [rax - 0x10], 0
je 0x1400bd675
lea rcx, [rbp]
call qword [sym.imp.KERNEL32.dll_GetStartupInfoW]
mov qword [rbp - 0x50], r14
lea rcx, [rbp - 0x50]
call fcn.1400055e0
nop
mov r8, qword [rbp - 0x60]
lea rdx, [0x14014a100]
lea rcx, [rbp - 0x50]
call fcn.140005d70
mov rbx, qword [rbp - 0x60]
mov rdx, qword [rbp - 0x50]
cmp dword [rdx - 8], 1
jle 0x1400bd5f9
mov edx, dword [rdx - 0x10]
lea rcx, [rbp - 0x50]
call fcn.140005760
mov rdx, qword [rbp - 0x50]
lea rax, [rsp + 0x70]
mov qword [rsp + 0x48], rax
lea rax, [rbp]
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x38], r14
mov qword [rsp + 0x30], r14
mov dword [rsp + 0x28], r14d
mov dword [rsp + 0x20], r14d
xor r9d, r9d
xor r8d, r8d
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
je 0x1400bd654
mov rcx, qword [rsp + 0x78]
test rcx, rcx
je 0x1400bd643
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rsp + 0x70]
test rcx, rcx
je 0x1400bd654
call qword [sym.imp.KERNEL32.dll_CloseHandle]
nop
mov rdx, qword [rbp - 0x50]
add rdx, 0xffffffffffffffe8
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400bd675
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x60]
add rdx, 0xffffffffffffffe8
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400bd696
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rbx, qword [rbp - 0x78]
test rbx, rbx
je 0x1400bd710
mov rdi, qword [rbp - 0x70]
cmp rbx, rdi
je 0x1400bd6dc
nop dword [rax + rax]
mov rdx, qword [rbx]
sub rdx, 0x18
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400bd6cf
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
add rbx, 8
cmp rbx, rdi
jne 0x1400bd6b0
mov rbx, qword [rbp - 0x78]
mov rdx, qword [rbp - 0x68]
sub rdx, rbx
and rdx, 0xfffffffffffffff8
mov rax, rbx
cmp rdx, 0x1000
jb 0x1400bd708
add rdx, 0x27
mov rbx, qword [rbx - 8]
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400bd73c
mov rcx, rbx
call fcn.1400ff054
mov rcx, qword [rbp + 0x870]
xor rcx, rsp
call fcn.1400ff350
lea r11, [rsp + 0x980]
mov rbx, qword [r11 + 0x10]
mov rsi, qword [r11 + 0x18]
mov rdi, qword [r11 + 0x20]
mov r14, qword [r11 + 0x28]
mov rsp, r11
pop rbp
ret
call fcn.14010b448
int3