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

Disassembly:
push rbp
push rsi
push rdi
push r14
push r15
sub rsp, 0x1a0
lea rbp, [rsp + 0x60]
mov qword [rbp + 0x180], rbx
mov rax, qword [0x18014f0c0]
xor rax, rbp
mov qword [rbp + 0x130], rax
mov r14d, r8d
mov rsi, rdx
mov rbx, rcx
xor edi, edi
mov qword [rbp + 0x10], rdi
test rdx, rdx
je 0x180009c72
mov eax, dword [0x18011f980]
cmp dword [rcx], eax
jne 0x180009703
mov eax, dword [0x18011f984]
cmp dword [rcx + 4], eax
jne 0x180009703
mov eax, dword [0x18011f988]
cmp dword [rcx + 8], eax
jne 0x180009703
mov eax, dword [0x18011f98c]
cmp dword [rcx + 0xc], eax
je 0x180009c72
lea rax, [rbp + 0x10]
mov qword [rsp + 0x20], rax
lea r9, [0x180131fe0]
xor edx, edx
lea r8d, [rdx + 1]
lea rcx, [0x18011f9a0]
call qword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x180009c72
mov ecx, dword [rsi]
test ecx, ecx
je 0x180009799
nop dword [rax]
nop dword [rax + rax]
mov rax, qword [rsi + 8]
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0x18], xmm0
lea r9, [rbp + 0x18]
mov r8d, 1
mov rdx, rbx
test r14d, r14d
je 0x18000977b
cmp ecx, r8d
mov rcx, qword [rbp + 0x10]
mov rax, qword [rcx]
jne 0x18000976e
call qword [rax + 0x28]
jmp 0x180009771
call qword [rax + 0x38]
test eax, eax
js 0x180009c74
jmp 0x18000978f
cmp ecx, 1
mov rcx, qword [rbp + 0x10]
mov rax, qword [rcx]
jne 0x18000978c
call qword [rax + 0x30]
jmp 0x18000978f
call qword [rax + 0x40]
add rsi, 0x10
mov ecx, dword [rsi]
test ecx, ecx
jne 0x180009740
test r14d, r14d
jne 0x180009c76
lea r8d, [r14 + 0x40]
lea rdx, [rbp + 0xb0]
mov rcx, rbx
call qword [sym.imp.ole32.dll_StringFromGUID2]
test eax, eax
jne 0x1800097c3
lea eax, [r14 + 0xd]
jmp 0x180009c74
mov rbx, rdi
lea rcx, [rbp + 0xb0]
mov rax, 0xffffffffffffffff
inc rax
cmp word [rcx + rax*2], bx
jne 0x1800097d4
inc eax
cdqe
lea r15, [rax + rax]
mov eax, 0x80000000
add rax, r15
mov ecx, 0xffffffff
cmp rax, rcx
ja 0x18000989d
movsxd rsi, r15d
cmp r15d, 0x400
jg 0x180009839
mov rcx, rsi
call fcn.180005e10
test al, al
je 0x180009839
lea rax, [rsi + 0xf]
cmp rax, rsi
ja 0x180009826
movabs rax, 0xffffffffffffff0
and rax, 0xfffffffffffffff0
call fcn.1800f1810
sub rsp, rax
lea r14, [rsp + 0x60]
jmp 0x180009861
mov rax, rsi
not rax
cmp rax, 0x10
jb 0x180009cb8
lea rcx, [rsi + 0x10]
call fcn.180103ac0
test rax, rax
je 0x18000989d
mov qword [rax], rdi
mov rbx, rax
lea r14, [rax + 0x10]
test r14, r14
je 0x18000989d
mov byte [r14], dil
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x30], rdi
mov dword [rsp + 0x28], r15d
mov qword [rsp + 0x20], r14
mov r9d, 0xffffffff
lea r8, [rbp + 0xb0]
xor edx, edx
lea ecx, [rdx + 3]
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test eax, eax
cmove r14, rdi
jmp 0x1800098a0
mov r14, rdi
test r14, r14
je 0x180009c54
lea r8, str.CLSID_
mov edx, 0x80
lea rcx, [rbp + 0x30]
call fcn.180101930
test eax, eax
je 0x1800098e6
cmp eax, 0xc
je 0x180009cad
cmp eax, 0x16
je 0x180009cce
cmp eax, 0x22
je 0x180009cce
cmp eax, 0x50
jne 0x180009cc3
mov r8, r14
mov edx, 0x80
lea rcx, [rbp + 0x30]
call fcn.180102e84
test eax, eax
je 0x18000991f
cmp eax, 0xc
je 0x180009cad
cmp eax, 0x16
je 0x180009cce
cmp eax, 0x22
je 0x180009cce
cmp eax, 0x50
jne 0x180009cc3
lea r8, str.Required_Categories
mov edx, 0x80
lea rcx, [rbp + 0x30]
call fcn.180102e84
test eax, eax
je 0x18000995c
cmp eax, 0xc
je 0x180009cad
cmp eax, 0x16
je 0x180009cce
cmp eax, 0x22
je 0x180009cce
cmp eax, 0x50
jne 0x180009cc3
mov dword [rbp + 8], edi
mov qword [rbp], rdi
lea rax, [rbp]
mov qword [rsp + 0x20], rax
mov r9d, 0x20019
xor r8d, r8d
lea rdx, [rbp + 0x30]
mov rcx, 0xffffffff80000000
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov rsi, rdi
test eax, eax
cmove rsi, qword [rbp]
mov ecx, edi
cmovne ecx, eax
test ecx, ecx
jne 0x180009a6c
mov qword [rsp + 0x58], rdi
mov qword [rsp + 0x50], rdi
mov qword [rsp + 0x48], rdi
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x30], rdi
mov qword [rsp + 0x28], rdi
lea rax, [rbp + 8]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyA]
mov r15d, eax
test rsi, rsi
je 0x1800099ee
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rsi, rdi
test r15d, r15d
jne 0x180009a6c
cmp dword [rbp + 8], r15d
jne 0x180009a6c
cmp byte [0x180156720], r15b
jne 0x180009a44
lea rcx, str.Advapi32.dll
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
test rax, rax
je 0x180009a34
lea rdx, str.RegDeleteKeyExA
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x180156728], rax
mov byte [0x180156720], 1
jmp 0x180009a4b
mov rax, qword [0x180156728]
mov byte [0x180156720], 1
jmp 0x180009a4b
mov rax, qword [0x180156728]
lea rdx, [rbp + 0x30]
mov rcx, 0xffffffff80000000
test rax, rax
je 0x180009a65
xor r9d, r9d
xor r8d, r8d
call rax
jmp 0x180009a6c
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
nop
lea r8, str.CLSID_
mov edx, 0x80
lea rcx, [rbp + 0x30]
call fcn.180101930
test eax, eax
je 0x180009aa9
cmp eax, 0xc
je 0x180009cad
cmp eax, 0x16
je 0x180009cce
cmp eax, 0x22
je 0x180009cce
cmp eax, 0x50
jne 0x180009cc3
mov r8, r14
mov edx, 0x80
lea rcx, [rbp + 0x30]
call fcn.180102e84
test eax, eax
je 0x180009ae2
cmp eax, 0xc
je 0x180009cad
cmp eax, 0x16
je 0x180009cce
cmp eax, 0x22
je 0x180009cce
cmp eax, 0x50
jne 0x180009cc3
lea r8, str.Implemented_Categories
mov edx, 0x80
lea rcx, [rbp + 0x30]
call fcn.180102e84
test eax, eax
je 0x180009b1f
cmp eax, 0xc
je 0x180009cad
cmp eax, 0x16
je 0x180009cce
cmp eax, 0x22
je 0x180009cce
cmp eax, 0x50
jne 0x180009cc3
mov qword [rbp], rdi
lea rax, [rbp]
mov qword [rsp + 0x20], rax
mov r9d, 0x20019
xor r8d, r8d
lea rdx, [rbp + 0x30]
mov rcx, 0xffffffff80000000
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x180009b5e
mov eax, edi
test rsi, rsi
je 0x180009b5a
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rsi, qword [rbp]
test eax, eax
jne 0x180009c39
mov qword [rsp + 0x58], rdi
mov qword [rsp + 0x50], rdi
mov qword [rsp + 0x48], rdi
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x30], rdi
mov qword [rsp + 0x28], rdi
lea rax, [rbp + 8]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyA]
mov r14d, eax
test rsi, rsi
je 0x180009bb7
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rsi, rdi
test r14d, r14d
jne 0x180009c47
cmp dword [rbp + 8], r14d
jne 0x180009c39
cmp byte [0x180156720], r14b
jne 0x180009c11
lea rcx, str.Advapi32.dll
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
test rax, rax
je 0x180009c01
lea rdx, str.RegDeleteKeyExA
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x180156728], rax
mov byte [0x180156720], 1
jmp 0x180009c18
mov rax, qword [0x180156728]
mov byte [0x180156720], 1
jmp 0x180009c18
mov rax, qword [0x180156728]
lea rdx, [rbp + 0x30]
mov rcx, 0xffffffff80000000
test rax, rax
je 0x180009c32
xor r9d, r9d
xor r8d, r8d
call rax
jmp 0x180009c39
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
nop
test rsi, rsi
je 0x180009c47
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rcx, 0xffffffff80000000
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
test rbx, rbx
je 0x180009c76
nop dword [rax]
mov rcx, rbx
mov rbx, qword [rbx]
call fcn.1800fdff0
test rbx, rbx
jne 0x180009c60
jmp 0x180009c76
mov eax, edi
mov edi, eax
mov rcx, qword [rbp + 0x10]
test rcx, rcx
je 0x180009c86
mov rdx, qword [rcx]
call qword [rdx + 0x10]
nop
mov eax, edi
mov rcx, qword [rbp + 0x130]
xor rcx, rbp
call fcn.1800f0be0
mov rbx, qword [rbp + 0x180]
lea rsp, [rbp + 0x140]
pop r15
pop r14
pop rdi
pop rsi
pop rbp
ret
mov ecx, 0x8007000e
call fcn.180001ba0
int3
mov ecx, 0x80070216
call fcn.180001ba0
int3
mov ecx, 0x80004005
call fcn.180001ba0
int3
mov ecx, 0x80070057
call fcn.180001ba0
int3