Function at 0x14000a2f0
Capabilities:
Delete registry key
Query or enumerate registry key

Disassembly:
mov rax, rsp
push rdi
sub rsp, 0x880
mov qword [rax + 8], rbx
mov qword [rax - 0x10], rbp
mov rdx, rcx
mov rbp, rcx
lea rcx, [rsp + 0x60]
xor ebx, ebx
mov qword [rax + 0x18], rbx
call qword [sym.imp.ntoskrnl.exe_RtlInitUnicodeString]
lea rax, [rsp + 0x60]
lea r8, [rsp + 0x30]
lea rcx, [rsp + 0x8a0]
mov edx, 0xf003f
mov qword [rsp + 0x40], rax
mov dword [rsp + 0x30], 0x30
mov qword [rsp + 0x38], rbx
mov dword [rsp + 0x48], 0x40
mov qword [rsp + 0x50], rbx
mov qword [rsp + 0x58], rbx
call qword [sym.imp.ntoskrnl.exe_ZwOpenKey]
mov edi, eax
test eax, eax
js 0x14000a592
mov rcx, qword [rsp + 0x8a0]
lea rax, [rsp + 0x898]
lea edx, [rbx + 2]
xor r9d, r9d
xor r8d, r8d
mov qword [rsp + 0x20], rax
mov dword [rsp + 0x898], ebx
call qword [sym.imp.ntoskrnl.exe_ZwQueryKey]
mov edi, eax
cmp eax, 0xc0000023
jne 0x14000a592
mov edx, dword [rsp + 0x898]
xor ecx, ecx
call qword [sym.imp.ntoskrnl.exe_ExAllocatePool]
mov rbx, rax
mov qword [rsp + 0x8a8], rax
test rax, rax
je 0x14000a592
mov r9d, dword [rsp + 0x898]
mov rcx, qword [rsp + 0x8a0]
lea rax, [rsp + 0x898]
mov r8, rbx
mov edx, 2
mov qword [rsp + 0x20], rax
call qword [sym.imp.ntoskrnl.exe_ZwQueryKey]
mov edi, eax
test eax, eax
js 0x14000a587
mov qword [rsp + 0x870], rsi
mov esi, dword [rbx + 0x14]
test esi, esi
je 0x14000a565
dec esi
cmp esi, 0xffffffff
je 0x14000a565
nop word [rax + rax]
mov rcx, qword [rsp + 0x8a0]
lea rax, [rsp + 0x898]
xor r9d, r9d
mov qword [rsp + 0x28], rax
xor r8d, r8d
mov edx, esi
mov dword [rsp + 0x20], 0
call qword [sym.imp.ntoskrnl.exe_ZwEnumerateKey]
cmp eax, 0xc0000023
jne 0x14000a552
mov edx, dword [rsp + 0x898]
xor ecx, ecx
call qword [sym.imp.ntoskrnl.exe_ExAllocatePool]
mov rbx, rax
test rax, rax
je 0x14000a552
mov ecx, dword [rsp + 0x898]
lea rax, [rsp + 0x898]
mov r9, rbx
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], ecx
mov rcx, qword [rsp + 0x8a0]
xor r8d, r8d
mov edx, esi
call qword [sym.imp.ntoskrnl.exe_ZwEnumerateKey]
test eax, eax
jns 0x14000a4b3
xor edx, edx
mov rcx, rbx
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
jmp 0x14000a552
xor eax, eax
or rcx, 0xffffffffffffffff
mov rdi, rbp
repne scasw ax, word [rdi]
mov eax, dword [rbx + 0xc]
shr rax, 1
not rcx
add rax, rcx
cmp rax, 0x400
jb 0x14000a4e0
xor edx, edx
mov rcx, rbx
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
jmp 0x14000a552
lea rcx, [rsp + 0x70]
xor edx, edx
mov r8d, 0x800
call fcn.14000aca0
lea rcx, [rsp + 0x70]
mov rdx, rbp
sub rcx, rbp
nop dword [rax]
movzx eax, word [rdx]
add rdx, 2
mov word [rcx + rdx - 2], ax
test ax, ax
jne 0x14000a500
xor eax, eax
or rcx, 0xffffffffffffffff
lea rdi, [rsp + 0x70]
repne scasw ax, word [rdi]
mov eax, dword [0x14000b3a4]
lea rdx, [rbx + 0x10]
mov dword [rdi - 2], eax
mov r8d, dword [rbx + 0xc]
lea rcx, [rsp + 0x70]
shr r8, 1
call sub.ntoskrnl.exe_wcsncat
lea rcx, [rsp + 0x70]
call fcn.14000a2f0
xor edx, edx
mov rcx, rbx
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
dec esi
cmp esi, 0xffffffff
jne 0x14000a420
mov rbx, qword [rsp + 0x8a8]
mov rcx, qword [rsp + 0x8a0]
call qword [sym.imp.ntoskrnl.exe_ZwDeleteKey]
mov rsi, qword [rsp + 0x870]
mov edi, eax
test eax, eax
mov eax, 0
cmovns edi, eax
xor edx, edx
mov rcx, rbx
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
mov rcx, qword [rsp + 0x8a0]
mov rbp, qword [rsp + 0x878]
mov rbx, qword [rsp + 0x890]
test rcx, rcx
je 0x14000a5b5
call qword [sym.imp.ntoskrnl.exe_ZwClose]
mov eax, edi
add rsp, 0x880
pop rdi
ret