Function at 0x140015380
Capabilities:
Persist via windows service
Set registry value

Disassembly:
mov rax, rsp
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xe0
mov qword [rax - 0x68], 0xfffffffffffffffe
mov qword [rax + 0x18], rbx
mov qword [rax + 0x20], rsi
mov rax, qword [0x14004b008]
xor rax, rsp
mov qword [rsp + 0xd0], rax
mov rbx, rdx
mov r12, qword [0x14004bbd0]
mov qword [rsp + 0x78], r12
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x60], xmm0
xor r13d, r13d
mov qword [rsp + 0x70], r13
cmp qword [rcx + 0x18], 8
jb 0x1400153df
mov rcx, qword [rcx]
mov qword [rsp + 0xc8], 7
mov qword [rsp + 0xc0], r13
mov word [rsp + 0xb0], r13w
cmp word [rcx], 0
jne 0x140015407
mov r8, r13
jmp 0x14001541b
or r8, 0xffffffffffffffff
nop dword [rax + rax]
inc r8
cmp word [rcx + r8*2], 0
jne 0x140015410
mov rdx, rcx
lea rcx, [rsp + 0xb0]
call fcn.14000c490
nop
lea r8, [rsp + 0xb0]
mov rdx, rbx
lea rcx, [rsp + 0x60]
call fcn.14000b090
nop
mov rax, qword [rsp + 0xc8]
cmp rax, 8
jb 0x1400154bd
inc rax
mov rcx, qword [rsp + 0xb0]
movabs rdx, 0x7fffffffffffffff
cmp rax, rdx
jbe 0x140015470
call fcn.140022518
int3
add rax, rax
cmp rax, 0x1000
jb 0x1400154b8
test byte [rsp + 0xb0], 0x1f
je 0x14001548b
call fcn.140022518
int3
mov rax, qword [rcx - 8]
cmp rax, rcx
jb 0x14001549a
call fcn.140022518
int3
sub rcx, rax
cmp rcx, 8
jae 0x1400154a9
call fcn.140022518
int3
cmp rcx, 0x27
jbe 0x1400154b5
call fcn.140022518
int3
mov rcx, rax
call fcn.140019294
mov esi, r13d
mov r15, qword [rsp + 0x68]
mov r14, qword [rsp + 0x60]
nop word [rax + rax]
mov rax, r15
sub rax, r14
sar rax, 5
mov edx, esi
cmp rdx, rax
jae 0x14001571e
xorps xmm0, xmm0
movdqu xmmword [rsp + 0xb0], xmm0
mov qword [rsp + 0xc0], r13
shl rdx, 5
add rdx, r14
mov qword [rsp + 0x98], 7
mov qword [rsp + 0x90], r13
mov word [rsp + 0x80], r13w
or r9, 0xffffffffffffffff
xor r8d, r8d
lea rcx, [rsp + 0x80]
call fcn.14000ca30
lea rdx, [rsp + 0xb0]
lea rcx, [rsp + 0x80]
call fcn.14000b2b0
mov rax, qword [rsp + 0xb8]
mov rbx, qword [rsp + 0xb0]
sub rax, rbx
sar rax, 5
cmp rax, 5
je 0x140015580
lea rcx, [rsp + 0xb0]
call fcn.1400180d0
nop
lea rcx, [rsp + 0x60]
call fcn.1400180d0
jmp 0x140015737
lea rcx, [rbx + 0x80]
cmp qword [rcx + 0x18], 8
jb 0x140015591
mov rcx, qword [rcx]
call fcn.1400222b8
mov dword [rsp + 0x50], eax
mov qword [0x14004bbd0], 0xffffffff80000002
add rbx, 0x40
mov rdi, qword [rbx + 0x10]
cmp rdi, 1
ja 0x1400155cc
mov qword [rbx + 0x10], r13
cmp qword [rbx + 0x18], 8
jb 0x1400155c3
mov rax, qword [rbx]
jmp 0x1400155c6
mov rax, rbx
mov word [rax], r13w
jmp 0x140015606
cmp qword [rbx + 0x18], 8
jb 0x1400155d8
mov rcx, qword [rbx]
jmp 0x1400155db
mov rcx, rbx
sub rdi, 1
je 0x1400155ee
lea r8, [rdi + rdi]
lea rdx, [rcx + 2]
call fcn.14001baa0
mov qword [rbx + 0x10], rdi
cmp qword [rbx + 0x18], 8
jb 0x1400155fe
mov rax, qword [rbx]
jmp 0x140015601
mov rax, rbx
mov word [rax + rdi*2], r13w
mov rax, qword [rbx + 0x10]
lea rcx, [rax - 1]
mov rdi, rax
cmp rax, rcx
jae 0x140015622
lea rcx, str.invalid_string_position
call fcn.140019214
sub rax, rcx
cmp rax, 1
ja 0x140015645
mov qword [rbx + 0x10], rcx
cmp qword [rbx + 0x18], 8
jb 0x14001563b
mov rax, qword [rbx]
jmp 0x14001563e
mov rax, rbx
mov word [rax + rcx*2], r13w
jmp 0x14001568a
cmp qword [rbx + 0x18], 8
jb 0x140015651
mov rax, qword [rbx]
jmp 0x140015654
mov rax, rbx
lea r9, [rax + rcx*2]
dec rdi
mov r8, rdi
sub r8, rcx
je 0x140015672
add r8, r8
lea rdx, [r9 + 2]
mov rcx, r9
call fcn.14001baa0
mov qword [rbx + 0x10], rdi
cmp qword [rbx + 0x18], 8
jb 0x140015682
mov rax, qword [rbx]
jmp 0x140015685
mov rax, rbx
mov word [rax + rdi*2], r13w
cmp qword [rbx + 0x18], 8
jb 0x140015694
mov rbx, qword [rbx]
mov qword [rsp + 0x40], r13
lea rax, [rsp + 0x58]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], r13
mov eax, dword [0x14004bbc8]
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], r13d
xor r9d, r9d
xor r8d, r8d
lea rdx, str.SYSTEMCurrentControlSetServicesBTHPORTParametersSupportedServices
mov rcx, qword [0x14004bbd0]
call qword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x14001570a
mov dword [rsp + 0x28], 4
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
mov r9d, 4
xor r8d, r8d
mov rdx, rbx
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
nop
lea rcx, [rsp + 0xb0]
call fcn.1400180d0
inc esi
jmp 0x1400154d0
lea rcx, [rsp + 0x60]
call fcn.1400180d0
nop
jmp 0x140015730
mov qword [0x14004bbd0], r12
mov rcx, qword [rsp + 0xd0]
xor rcx, rsp
call fcn.140019260
lea r11, [rsp + 0xe0]
mov rbx, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret