Function at 0x37e68
Capabilities:
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push rbx
push rbp
push rsi
push rdi
sub rsp, 0x5a8
mov rax, qword [0x000a7100]
xor rax, rsp
mov qword [rsp + 0x590], rax
mov rax, qword [rsp + 0x5f0]
mov rbx, rcx
xor ecx, ecx
mov qword [rsp + 0x80], rax
mov rax, qword [rsp + 0x5f8]
mov byte [rsp + 0x40], cl
mov qword [rsp + 0x70], rax
mov rax, qword [rsp + 0x600]
mov qword [rsp + 0x50], rcx
mov rbp, rcx
mov qword [rsp + 0x60], rcx
mov rsi, rcx
mov qword [rsp + 0x88], rcx
mov dword [rsp + 0x48], ecx
lea rcx, [rsp + 0xc0]
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x78], r9
mov qword [rsp + 0x68], r8
mov rdi, rdx
call qword [sym.imp.ntoskrnl.exe_RtlInitUnicodeString]
test rdi, rdi
je 0x37f04
lea rcx, [0x000962e0]
mov rdx, rdi
call fcn.00045138
mov rax, qword [rsp + 0x68]
test rax, rax
je 0x37f1d
lea rcx, [0x00096320]
mov rdx, rax
call fcn.00045138
and qword [rsp + 0xb0], rsi
and qword [rsp + 0xb8], rsi
lea rax, [rsp + 0xc0]
lea r8, [rsp + 0x90]
lea rcx, [rsp + 0x50]
mov edx, 0x20019
mov qword [rsp + 0xa0], rax
mov dword [rsp + 0x90], 0x30
mov qword [rsp + 0x98], rbx
mov dword [rsp + 0xa8], 0x240
call qword [sym.imp.ntoskrnl.exe_ZwOpenKey]
mov ecx, 0xc0000000
mov ebx, eax
and eax, ecx
cmp eax, ecx
jne 0x37f93
lea rcx, [0x00096360]
mov edx, ebx
call fcn.00045138
jmp 0x386af
mov rcx, qword [rsp + 0x50]
xor r9d, r9d
lea rax, [rsp + 0x48]
lea edi, [r9 + 2]
xor r8d, r8d
mov qword [rsp + 0x20], rax
mov edx, edi
call qword [sym.imp.ntoskrnl.exe_ZwQueryKey]
mov ebx, eax
test eax, eax
js 0x37fcb
lea rcx, [0x000963b0]
call fcn.00045138
jmp 0x386af
cmp eax, 0x80000005
je 0x37fd9
cmp eax, 0xc0000023
jne 0x37ff8
mov edx, dword [rsp + 0x48]
xor ecx, ecx
mov r8d, 0x6c616e41
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
mov rbp, rax
test rax, rax
jne 0x38001
mov ebx, 0xc0000017
lea rcx, [0x000963e0]
jmp 0x37fc1
mov r8d, dword [rsp + 0x48]
xor edx, edx
mov rcx, rax
call fcn.00091d10
mov r9d, dword [rsp + 0x48]
lea rcx, [rsp + 0x48]
mov qword [rsp + 0x20], rcx
mov rcx, qword [rsp + 0x50]
mov r8, rbp
mov edx, edi
call qword [sym.imp.ntoskrnl.exe_ZwQueryKey]
mov ecx, 0xc0000000
mov ebx, eax
and eax, ecx
cmp eax, ecx
jne 0x38048
lea rcx, [0x00096410]
jmp 0x37f87
mov r8d, dword [rbp + 0x20]
mov edx, dword [rbp + 0x14]
lea rcx, [0x00096460]
call fcn.0004505c
xor edi, edi
mov dword [rsp + 0x44], edi
cmp dword [rbp + 0x20], esi
jbe 0x3850c
mov rcx, qword [rsp + 0x50]
xor r9d, r9d
lea rax, [rsp + 0x48]
mov qword [rsp + 0x28], rax
and dword [rsp + 0x20], 0
lea r8d, [r9 + 1]
mov edx, edi
call qword [sym.imp.ntoskrnl.exe_ZwEnumerateValueKey]
mov ebx, eax
test eax, eax
js 0x380aa
mov edx, eax
lea rcx, [0x00096480]
call fcn.00045138
mov al, byte [rsp + 0x40]
jmp 0x384f5
cmp eax, 0x80000005
je 0x380b8
cmp eax, 0xc0000023
jne 0x380f7
mov edx, dword [rsp + 0x48]
xor ecx, ecx
mov r8d, 0x6c616e41
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
mov rsi, rax
mov qword [rsp + 0x88], rax
test rax, rax
jne 0x380e8
lea rcx, [0x000964e0]
call fcn.00045138
jmp 0x380a1
mov r8d, dword [rsp + 0x48]
xor edx, edx
mov rcx, rax
call fcn.00091d10
test rsi, rsi
je 0x380da
mov rcx, qword [rsp + 0x50]
lea rax, [rsp + 0x48]
mov r9, rsi
mov qword [rsp + 0x28], rax
mov eax, dword [rsp + 0x48]
mov r8d, 1
mov edx, edi
mov dword [rsp + 0x20], eax
call qword [sym.imp.ntoskrnl.exe_ZwEnumerateValueKey]
mov ecx, 0xc0000000
mov ebx, eax
and eax, ecx
cmp eax, ecx
jne 0x38138
mov edx, ebx
jmp 0x38095
mov eax, dword [rsi + 4]
sub eax, 1
je 0x3838e
sub eax, 3
je 0x38274
sub eax, 3
jne 0x384d1
lea rcx, [rsp + 0xd0]
xor edx, edx
mov r8d, 0x258
call fcn.00091d10
mov r8d, dword [rsi + 0x10]
lea rdx, [rsi + 0x14]
lea rcx, [rsp + 0xd0]
call fcn.00091720
lea rdx, [rsp + 0xd0]
lea rcx, [0x00096520]
call fcn.00045138
mov rdx, qword [rsp + 0x68]
or rcx, 0xffffffffffffffff
xor eax, eax
lea rdi, [rsp + 0xd0]
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
lea rcx, [rsp + 0xd0]
call qword [sym.imp.ntoskrnl.exe__wcsnicmp]
test eax, eax
jne 0x384cd
mov rdi, qword [rsp + 0x70]
test rdi, rdi
je 0x3820e
mov eax, dword [rsi + 0xc]
cmp dword [rdi], eax
jae 0x381dc
mov dword [rdi], eax
jmp 0x381f8
mov edx, dword [rsi + 8]
mov rcx, qword [rsp + 0x80]
mov r8, rax
add rdx, rsi
call qword [sym.imp.ntoskrnl.exe_wcsncpy]
mov edx, dword [rsi + 0xc]
mov dword [rdi], edx
mov rax, qword [rsp + 0x58]
mov dword [rax], 7
mov al, 1
mov byte [rsp + 0x40], al
jmp 0x384cd
cmp dword [rsi + 0xc], 0
je 0x384cd
mov edx, dword [rsi + 0xc]
xor ecx, ecx
mov r8d, 0x6c616e41
lea rdx, [rdx + rdx + 0x2a]
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
mov rdi, rax
test rax, rax
jne 0x38240
mov ebx, 0xc0000004
jmp 0x384cd
mov r8d, dword [rsi + 0xc]
xor edx, edx
mov rcx, rax
lea r8, [r8 + r8 + 0x2a]
call fcn.00091d10
and dword [rdi + 0x10], 0
mov qword [rdi + 8], rdi
mov qword [rdi], rdi
mov dword [rdi + 0x14], 0x6c616e41
mov eax, dword [rsi + 0xc]
mov dword [rdi + 0x18], 7
jmp 0x3849b
lea rcx, [rsp + 0xd0]
xor edx, edx
mov r8d, 0x258
call fcn.00091d10
mov r8d, dword [rsi + 0x10]
lea rdx, [rsi + 0x14]
lea rcx, [rsp + 0xd0]
call fcn.00091720
lea rdx, [rsp + 0xd0]
lea rcx, [0x00096520]
call fcn.00045138
mov rdx, qword [rsp + 0x68]
or rcx, 0xffffffffffffffff
xor eax, eax
lea rdi, [rsp + 0xd0]
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
lea rcx, [rsp + 0xd0]
call qword [sym.imp.ntoskrnl.exe__wcsnicmp]
test eax, eax
jne 0x384cd
mov rdi, qword [rsp + 0x70]
test rdi, rdi
je 0x3831b
mov eax, dword [rsi + 0xc]
cmp dword [rdi], eax
jb 0x38309
mov eax, dword [rsi + 8]
mov ecx, dword [rax + rsi]
mov rax, qword [rsp + 0x80]
mov dword [rax], ecx
mov eax, dword [rsi + 0xc]
mov dword [rdi], eax
mov rax, qword [rsp + 0x58]
mov dword [rax], 4
jmp 0x38203
cmp dword [rsi + 0xc], 0
je 0x384cd
mov edx, dword [rsi + 0xc]
xor ecx, ecx
mov r8d, 0x6c616e41
lea rdx, [rdx + rdx + 0x2a]
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
mov rdi, rax
test rax, rax
je 0x38236
mov r8d, dword [rsi + 0xc]
xor edx, edx
mov rcx, rax
lea r8, [r8 + r8 + 0x2a]
call fcn.00091d10
and dword [rdi + 0x10], 0
mov qword [rdi + 8], rdi
mov qword [rdi], rdi
mov dword [rdi + 0x14], 0x6c616e41
mov eax, dword [rsi + 0xc]
mov dword [rdi + 0x18], 7
mov dword [rdi + 0x1c], eax
lea rdx, [rdi + 0x28]
mov qword [rdi + 0x20], rdx
mov eax, dword [rsi + 8]
mov ecx, dword [rax + rsi]
mov dword [rdx], ecx
jmp 0x384b6
lea rcx, [rsp + 0xd0]
xor edx, edx
mov r8d, 0x258
call fcn.00091d10
mov r8d, dword [rsi + 0x10]
lea rdx, [rsi + 0x14]
lea rcx, [rsp + 0xd0]
call fcn.00091720
lea rdx, [rsp + 0xd0]
lea rcx, [0x00096520]
call fcn.00045138
mov rdx, qword [rsp + 0x68]
or rcx, 0xffffffffffffffff
xor eax, eax
lea rdi, [rsp + 0xd0]
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
lea rcx, [rsp + 0xd0]
call qword [sym.imp.ntoskrnl.exe__wcsnicmp]
test eax, eax
jne 0x384cd
mov rdi, qword [rsp + 0x70]
test rdi, rdi
je 0x38440
mov eax, dword [rsi + 0xc]
cmp dword [rdi], eax
jae 0x38414
mov dword [rdi], eax
jmp 0x38430
mov edx, dword [rsi + 8]
mov rcx, qword [rsp + 0x80]
mov r8, rax
add rdx, rsi
call qword [sym.imp.ntoskrnl.exe_wcsncpy]
mov edx, dword [rsi + 0xc]
mov dword [rdi], edx
mov rax, qword [rsp + 0x58]
mov dword [rax], 1
jmp 0x38203
cmp dword [rsi + 0xc], 0
je 0x384cd
mov edx, dword [rsi + 0xc]
xor ecx, ecx
mov r8d, 0x6c616e41
lea rdx, [rdx + rdx + 0x2a]
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
mov rdi, rax
test rax, rax
je 0x38236
mov r8d, dword [rsi + 0xc]
xor edx, edx
mov rcx, rax
lea r8, [r8 + r8 + 0x2a]
call fcn.00091d10
and dword [rdi + 0x10], 0
mov qword [rdi + 8], rdi
mov qword [rdi], rdi
mov dword [rdi + 0x14], 0x6c616e41
mov eax, dword [rsi + 0xc]
mov dword [rdi + 0x18], 1
mov dword [rdi + 0x1c], eax
lea rcx, [rdi + 0x28]
mov qword [rdi + 0x20], rcx
mov edx, dword [rsi + 8]
mov r8d, dword [rsi + 0xc]
add rdx, rsi
call qword [sym.imp.ntoskrnl.exe_wcsncpy]
mov rcx, qword [rsp + 0x78]
mov rax, qword [rcx + 8]
mov qword [rdi], rcx
mov qword [rdi + 8], rax
mov qword [rax], rdi
mov qword [rcx + 8], rdi
mov edi, dword [rsp + 0x44]
mov edx, 0x6c616e41
mov rcx, rsi
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
mov al, byte [rsp + 0x40]
xor esi, esi
mov qword [rsp + 0x88], rsi
test al, al
jne 0x386af
inc edi
mov dword [rsp + 0x44], edi
cmp edi, dword [rbp + 0x20]
jb 0x3806a
test al, al
jne 0x386af
xor edi, edi
cmp dword [rbp + 0x14], edi
jbe 0x386af
mov rsi, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x50]
lea rax, [rsp + 0x48]
xor r9d, r9d
mov qword [rsp + 0x28], rax
and dword [rsp + 0x20], 0
xor r8d, r8d
mov edx, edi
call qword [sym.imp.ntoskrnl.exe_ZwEnumerateKey]
mov ecx, 0xc0000000
mov ebx, eax
and eax, ecx
cmp eax, ecx
jne 0x38559
lea rcx, [0x00096550]
mov edx, ebx
call fcn.00045138
cmp ebx, 0x80000005
je 0x38569
cmp ebx, 0xc0000023
jne 0x385a5
mov edx, dword [rsp + 0x48]
xor ecx, ecx
mov r8d, 0x6c616e41
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
mov qword [rsp + 0x60], rax
test rax, rax
jne 0x38596
lea rcx, [0x000965a0]
call fcn.00045138
jmp 0x3869c
mov r8d, dword [rsp + 0x48]
xor edx, edx
mov rcx, rax
call fcn.00091d10
mov rcx, qword [rsp + 0x60]
test rcx, rcx
je 0x38585
lea rax, [rsp + 0x48]
mov r9, rcx
mov rcx, qword [rsp + 0x50]
mov qword [rsp + 0x28], rax
mov eax, dword [rsp + 0x48]
xor r8d, r8d
mov edx, edi
mov dword [rsp + 0x20], eax
call qword [sym.imp.ntoskrnl.exe_ZwEnumerateKey]
mov ecx, 0xc0000000
mov ebx, eax
and eax, ecx
cmp eax, ecx
jne 0x385f4
lea rcx, [0x00096550]
mov edx, ebx
call fcn.00045138
jmp 0x3869c
lea rcx, [0x000965d0]
mov edx, edi
call fcn.00045138
lea rcx, [rsp + 0x330]
xor edx, edx
mov r8d, 0x258
call fcn.00091d10
mov rax, qword [rsp + 0x60]
lea rcx, [rsp + 0x330]
mov r8d, dword [rax + 0xc]
lea rdx, [rax + 0x10]
call fcn.00091720
lea r8, [rsp + 0x330]
lea rcx, [0x00096620]
mov edx, edi
call fcn.00045138
mov rax, qword [rsp + 0x58]
mov r9, qword [rsp + 0x78]
mov r8, qword [rsp + 0x68]
mov rcx, qword [rsp + 0x50]
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x80]
lea rdx, [rsp + 0x330]
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x20], rax
call fcn.00037e68
mov rcx, qword [rsp + 0x60]
mov edx, 0x6c616e41
mov ebx, eax
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
and qword [rsp + 0x60], 0
and dword [rsp + 0x48], 0
inc edi
cmp edi, dword [rbp + 0x14]
jb 0x3851c
mov rsi, qword [rsp + 0x88]
mov rcx, qword [rsp + 0x50]
test rcx, rcx
je 0x386c5
call qword [sym.imp.ntoskrnl.exe_ZwClose]
and qword [rsp + 0x50], 0
test rbp, rbp
je 0x386d8
mov edx, 0x6c616e41
mov rcx, rbp
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
mov rax, qword [rsp + 0x60]
test rax, rax
je 0x386f0
mov edx, 0x6c616e41
mov rcx, rax
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
test rsi, rsi
je 0x38703
mov edx, 0x6c616e41
mov rcx, rsi
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
mov eax, ebx
mov rcx, qword [rsp + 0x590]
xor rcx, rsp
call fcn.000916b0
add rsp, 0x5a8
pop rdi
pop rsi
pop rbp
pop rbx
ret