Function at 0x12c50
Capabilities:
Query or enumerate registry key
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x50
mov dword [ebp - 0x14], 0
push 0x17df0
call fcn.00011090
add esp, 4
mov dword [ebp - 4], 0x2000
push 0x33333838
mov eax, dword [ebp - 4]
push eax
push 0
call dword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x12c9d
push 0x17df4
call fcn.00011090
add esp, 4
jmp 0x12ec7
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x18], 0
jmp 0x12cb5
mov edx, dword [ebp - 0x18]
add edx, 1
mov dword [ebp - 0x18], edx
lea eax, [ebp - 0x1c]
push eax
mov ecx, dword [ebp - 4]
push ecx
mov edx, dword [ebp - 0x2c]
push edx
push 1
mov eax, dword [ebp - 0x18]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call dword [sym.imp.ntoskrnl.exe_ZwEnumerateValueKey]
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
jge 0x12cdc
jmp 0x12d54
mov edx, dword [ebp - 0x2c]
mov ax, word [edx + 0x10]
mov word [ebp - 0xe], ax
mov ecx, dword [ebp - 0x2c]
mov dx, word [ecx + 0x10]
mov word [ebp - 0x10], dx
mov eax, dword [ebp - 0x2c]
add eax, 0x14
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0xc]
push edx
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x2c]
add ecx, dword [eax + 8]
push ecx
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 4]
push eax
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx]
push edx
lea eax, [ebp - 0x10]
push eax
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.ntoskrnl.exe_ZwSetValueKey]
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
jge 0x12d4f
mov edx, dword [ebp - 0x20]
push edx
mov eax, dword [ebp - 0xc]
push eax
push str.ZwSetValueKey__ws_failed__x_n
call fcn.00011090
add esp, 0xc
push 0x7d0
call fcn.000110d0
jmp 0x12cac
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x18], 0
jmp 0x12d6c
mov edx, dword [ebp - 0x18]
add edx, 1
mov dword [ebp - 0x18], edx
lea eax, [ebp - 0x1c]
push eax
mov ecx, dword [ebp - 4]
push ecx
mov edx, dword [ebp - 0x14]
push edx
push 0
mov eax, dword [ebp - 0x18]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call dword [sym.imp.ntoskrnl.exe_ZwEnumerateKey]
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
jge 0x12d96
jmp 0x12eab
mov edx, dword [ebp - 0x14]
mov ax, word [edx + 0xc]
mov word [ebp - 0xe], ax
mov ecx, dword [ebp - 0x14]
mov dx, word [ecx + 0xc]
mov word [ebp - 0x10], dx
mov eax, dword [ebp - 0x14]
add eax, 0x10
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x44], 0x18
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x38], 0x40
lea edx, [ebp - 0x10]
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0
lea eax, [ebp - 0x44]
push eax
push 0xf003f
lea ecx, [ebp - 0x48]
push ecx
call dword [sym.imp.ntoskrnl.exe_ZwOpenKey]
mov dword [ebp - 0x20], eax
push 0x17e30
call fcn.00011090
add esp, 4
cmp dword [ebp - 0x20], 0
jl 0x12ea6
mov edx, dword [ebp + 8]
mov dword [ebp - 0x40], edx
movzx eax, byte [ebp + 0x10]
test eax, eax
je 0x12e3a
lea ecx, [ebp - 0x50]
push ecx
push 0
push 0
push 0
lea edx, [ebp - 0x44]
push edx
push 0xf003f
lea eax, [ebp - 0x4c]
push eax
call dword [sym.imp.ntoskrnl.exe_ZwCreateKey]
mov dword [ebp - 0x20], eax
jmp 0x12e5a
lea ecx, [ebp - 0x50]
push ecx
push 0
push 0
push 0
lea edx, [ebp - 0x44]
push edx
push 0xf003f
lea eax, [ebp - 0x4c]
push eax
call dword [0x18ccc]
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
jl 0x12e7d
mov cl, byte [ebp + 0x10]
push ecx
mov edx, dword [ebp - 0x48]
push edx
mov eax, dword [ebp - 0x4c]
push eax
call fcn.00012c50
mov ecx, dword [ebp - 0x4c]
push ecx
call dword [sym.imp.ntoskrnl.exe_ZwClose]
jmp 0x12e9c
mov edx, dword [ebp - 0x20]
push edx
mov eax, dword [ebp - 0xc]
push eax
push str.OldZwCreateKey__ws_failed__x_n
call fcn.00011090
add esp, 0xc
push 0x7d0
call fcn.000110d0
mov ecx, dword [ebp - 0x48]
push ecx
call dword [sym.imp.ntoskrnl.exe_ZwClose]
jmp 0x12d63
cmp dword [ebp - 8], 0
je 0x12ec7
push 0x33333838
mov edx, dword [ebp - 8]
push edx
call dword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
mov dword [ebp - 8], 0
mov esp, ebp
pop ebp
ret 0xc