Function at 0x140015e40
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 [0x140053008]
xor rax, rsp
mov qword [rsp + 0xd0], rax
mov rbx, rdx
mov r12, qword [0x140053bd0]
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 0x140015e9f
mov rcx, qword [rcx]
mov qword [rsp + 0xc8], 7
mov qword [rsp + 0xc0], r13
mov word [rsp + 0xb0], r13w
cmp word [rcx], 0
jne 0x140015ec7
mov r8, r13
jmp 0x140015edb
or r8, 0xffffffffffffffff
nop dword [rax + rax]
inc r8
cmp word [rcx + r8*2], 0
jne 0x140015ed0
mov rdx, rcx
lea rcx, [rsp + 0xb0]
call fcn.14000cb70
nop
lea r8, [rsp + 0xb0]
mov rdx, rbx
lea rcx, [rsp + 0x60]
call fcn.14000b770
nop
mov rax, qword [rsp + 0xc8]
cmp rax, 8
jb 0x140015f7d
inc rax
mov rcx, qword [rsp + 0xb0]
movabs rdx, 0x7fffffffffffffff
cmp rax, rdx
jbe 0x140015f30
call fcn.140029838
int3
add rax, rax
cmp rax, 0x1000
jb 0x140015f78
test byte [rsp + 0xb0], 0x1f
je 0x140015f4b
call fcn.140029838
int3
mov rax, qword [rcx - 8]
cmp rax, rcx
jb 0x140015f5a
call fcn.140029838
int3
sub rcx, rax
cmp rcx, 8
jae 0x140015f69
call fcn.140029838
int3
cmp rcx, 0x27
jbe 0x140015f75
call fcn.140029838
int3
mov rcx, rax
call fcn.140019d14
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 0x1400161de
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.14000d110
lea rdx, [rsp + 0xb0]
lea rcx, [rsp + 0x80]
call fcn.14000b990
mov rax, qword [rsp + 0xb8]
mov rbx, qword [rsp + 0xb0]
sub rax, rbx
sar rax, 5
cmp rax, 5
je 0x140016040
lea rcx, [rsp + 0xb0]
call fcn.140018b90
nop
lea rcx, [rsp + 0x60]
call fcn.140018b90
jmp 0x1400161f7
lea rcx, [rbx + 0x80]
cmp qword [rcx + 0x18], 8
jb 0x140016051
mov rcx, qword [rcx]
call fcn.1400295d8
mov dword [rsp + 0x50], eax
mov qword [0x140053bd0], 0xffffffff80000002
add rbx, 0x40
mov rdi, qword [rbx + 0x10]
cmp rdi, 1
ja 0x14001608c
mov qword [rbx + 0x10], r13
cmp qword [rbx + 0x18], 8
jb 0x140016083
mov rax, qword [rbx]
jmp 0x140016086
mov rax, rbx
mov word [rax], r13w
jmp 0x1400160c6
cmp qword [rbx + 0x18], 8
jb 0x140016098
mov rcx, qword [rbx]
jmp 0x14001609b
mov rcx, rbx
sub rdi, 1
je 0x1400160ae
lea r8, [rdi + rdi]
lea rdx, [rcx + 2]
call fcn.14001c560
mov qword [rbx + 0x10], rdi
cmp qword [rbx + 0x18], 8
jb 0x1400160be
mov rax, qword [rbx]
jmp 0x1400160c1
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 0x1400160e2
lea rcx, str.invalid_string_position
call fcn.140019c90
sub rax, rcx
cmp rax, 1
ja 0x140016105
mov qword [rbx + 0x10], rcx
cmp qword [rbx + 0x18], 8
jb 0x1400160fb
mov rax, qword [rbx]
jmp 0x1400160fe
mov rax, rbx
mov word [rax + rcx*2], r13w
jmp 0x14001614a
cmp qword [rbx + 0x18], 8
jb 0x140016111
mov rax, qword [rbx]
jmp 0x140016114
mov rax, rbx
lea r9, [rax + rcx*2]
dec rdi
mov r8, rdi
sub r8, rcx
je 0x140016132
add r8, r8
lea rdx, [r9 + 2]
mov rcx, r9
call fcn.14001c560
mov qword [rbx + 0x10], rdi
cmp qword [rbx + 0x18], 8
jb 0x140016142
mov rax, qword [rbx]
jmp 0x140016145
mov rax, rbx
mov word [rax + rdi*2], r13w
cmp qword [rbx + 0x18], 8
jb 0x140016154
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 [0x140053bc8]
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], r13d
xor r9d, r9d
xor r8d, r8d
lea rdx, str.SYSTEMCurrentControlSetServicesBTHPORTParametersSupportedServices
mov rcx, qword [0x140053bd0]
call qword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x1400161ca
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.140018b90
inc esi
jmp 0x140015f90
lea rcx, [rsp + 0x60]
call fcn.140018b90
nop
jmp 0x1400161f0
mov qword [0x140053bd0], r12
mov rcx, qword [rsp + 0xd0]
xor rcx, rsp
call fcn.140019ce0
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