Function at 0x7fff25d70810
Capabilities:
Query or enumerate registry key

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x40
mov esi, dword [r8 + 0xc]
lea r14, [r8 + 0xc]
mov rdi, qword [r8 + 0x10]
sub esi, 2
mov dword [r14], esi
mov rbx, r8
mov r12, rdx
mov rbp, rcx
test rcx, rcx
je 0x7fff25de71be
mov r9d, esi
mov qword [rsp + 0x20], r14
mov r8, rdi
mov edx, 3
call qword [sym.imp.ntdll.dll_NtQueryKey]
nop dword [rax + rax]
xor r13d, r13d
mov r15d, eax
cmp eax, 0xc000017c
je 0x7fff25de71d9
movzx ecx, word [r12]
mov edx, dword [r14]
add ecx, 4
add edx, ecx
mov ecx, edx
mov dword [r14], edx
test r15d, r15d
js 0x7fff25de71eb
mov rax, qword [rbx + 0x10]
cmp dword [rax], esi
ja 0x7fff25de71e1
cmp esi, ecx
jb 0x7fff25d70a67
lea rdx, [rdi + 4]
test rdx, rdx
je 0x7fff25de7286
cmp rdi, qword [rbx + 0x10]
jne 0x7fff25d70ab2
mov qword [rbx + 0x10], rdi
lea rcx, [rsp + 0x30]
mov eax, dword [rdi]
mov r14d, 0x5c
shr rax, 1
mov word [rdi + rax*2 + 4], r14w
mov eax, dword [rdi]
shr eax, 1
inc eax
mov word [rdi + rax*2 + 4], r13w
call qword [sym.imp.ntdll.dll_RtlInitUnicodeStringEx]
nop dword [rax + rax]
movzx eax, word [rsp + 0x30]
lea rcx, [rsp + 0x30]
mov dword [rdi], eax
mov rdx, r12
movzx eax, word [r12]
add ax, 2
add word [rsp + 0x32], ax
call qword [sym.imp.ntdll.dll_RtlAppendUnicodeStringToString]
nop dword [rax + rax]
movzx edx, word [rsp + 0x30]
cmp edx, 0x2c
jb 0x7fff25d70a14
mov rax, qword [rsp + 0x38]
mov ecx, edx
shr rcx, 1
cmp word [rax + rcx*2 - 2], r14w
jne 0x7fff25d7094b
mov eax, 0xfffe
add dx, ax
mov word [rsp + 0x30], dx
movzx esi, dx
mov eax, esi
mov dword [rdi], esi
shr rax, 1
mov word [rdi + rax*2 + 4], r13w
test bpl, 2
je 0x7fff25d70964
or dword [rbx], 4
movzx eax, word [rdi + 0x18]
cmp ax, 0x4d
jne 0x7fff25d70a37
mov eax, 0x44
lea rdx, [0x7fff25e561e8]
mov r8b, 1
mov word [rsp + 0x30], ax
lea rcx, [rsp + 0x30]
call qword [sym.imp.ntdll.dll_RtlEqualUnicodeString]
nop dword [rax + rax]
test al, al
je 0x7fff25d70a14
or dword [rbx], 2
mov ebp, 0x22
mov word [rsp + 0x30], si
mov edx, dword [rbx]
movzx eax, bp
add ax, ax
mov word [rbx + 4], bp
movzx ecx, ax
mov word [rbx + 6], cx
cmp ecx, dword [rdi]
jae 0x7fff25d709c6
lea eax, [rbp + 1]
mov word [rbx + 4], ax
shr si, 1
cmp si, bp
je 0x7fff25d70a60
mov rax, qword [rsp + 0x38]
mov edx, r14d
movzx ecx, bp
lea rcx, [rax + rcx*2]
call sub.ntdll.dll_wcsrchr
sub rax, qword [rsp + 0x38]
mov edx, dword [rbx]
sar rax, 1
sub ax, bp
mov word [rbx + 8], ax
test dl, 0x10
jne 0x7fff25d70a14
or edx, 8
mov dword [rbx], edx
movzx eax, word [rdi]
sub ax, word [rbx + 8]
sub ax, word [rbx + 6]
sub ax, 2
mov word [rbx + 0xa], ax
xor eax, eax
mov rbx, qword [rsp + 0x70]
mov rbp, qword [rsp + 0x78]
mov rsi, qword [rsp + 0x80]
add rsp, 0x40
pop r15
pop r14
pop r13
pop r12
pop rdi
ret
cmp ax, 0x55
jne 0x7fff25de7290
lea rcx, [rsp + 0x30]
call fcn.7fff25d71340
movzx ebp, ax
test ax, ax
je 0x7fff25d70a14
or dword [rbx], 1
movzx esi, word [rsp + 0x30]
jmp 0x7fff25d709a8
or edx, 0x10
mov dword [rbx], edx
jmp 0x7fff25d709f7
mov r8, rcx
xor edx, edx
mov rcx, qword gs:[0x60]
mov rcx, qword [rcx + 0x30]
call qword [sym.imp.ntdll.dll_RtlAllocateHeap]
nop dword [rax + rax]
mov rdi, rax
test rax, rax
je 0x7fff25de727c
mov rdx, qword [rbx + 0x10]
lea rcx, [rax + 4]
mov r8d, dword [rdx]
add rdx, 4
call sub.ntdll.dll_memcpy
mov rcx, qword [rbx + 0x10]
mov edx, dword [rcx]
mov dword [rdi], edx
jmp 0x7fff25d708ac
or dword [rbx], 0x20
jmp 0x7fff25d708c3
xor r13d, r13d
mov word [rdi + 4], r13w
mov rax, qword [r8 + 0x10]
mov dword [rax], r13d
mov dword [r14], 8
jmp 0x7fff25d708ac
mov r15d, r13d
jmp 0x7fff25d7087d
mov eax, 0x80000005
jmp 0x7fff25d70a16
cmp r15d, 0x80000005
jne 0x7fff25de7247
mov rcx, qword gs:[0x60]
mov r8d, edx
xor edx, edx
mov rcx, qword [rcx + 0x30]
call qword [sym.imp.ntdll.dll_RtlAllocateHeap]
nop dword [rax + rax]
mov rdi, rax
test rax, rax
je 0x7fff25de727c
mov r9d, dword [r14]
mov r8, rax
mov edx, 3
mov qword [rsp + 0x20], r14
mov rcx, rbp
call qword [sym.imp.ntdll.dll_NtQueryKey]
nop dword [rax + rax]
mov r15d, eax
cmp eax, 0xc000017c
je 0x7fff25d708ac
test r15d, r15d
jns 0x7fff25d708ac
cmp rdi, qword [rbx + 0x10]
je 0x7fff25de7274
mov rcx, qword gs:[0x60]
mov r8, rdi
xor edx, edx
mov rcx, qword [rcx + 0x30]
call qword [sym.imp.ntdll.dll_RtlFreeHeap]
nop dword [rax + rax]
mov eax, r15d
jmp 0x7fff25d70a16
mov eax, 0xc0000017
jmp 0x7fff25d70a16
mov eax, 0xc0000008
jmp 0x7fff25d70a16
cmp ax, 0x6d
je 0x7fff25d70972
cmp ax, 0x75
jne 0x7fff25d70a14
jmp 0x7fff25d70a41