Function at 0x14000a758
Capabilities:
Query or enumerate registry key

Disassembly:
push rbp
push rdi
push r12
push r14
push r15
sub rsp, 0x1c0
lea rbp, [rsp + 0x60]
mov qword [rbp + 0x1a0], rbx
mov qword [rbp + 0x1a8], rsi
mov rax, qword [0x1400227c0]
xor rax, rbp
mov qword [rbp + 0x150], rax
xor r15d, r15d
mov rdi, rcx
mov r14d, r8d
mov ecx, r15d
mov rbx, rdx
mov qword [rbp + 8], rcx
test rdx, rdx
je 0x14000ac36
mov eax, dword [0x140019090]
cmp dword [rdi], eax
jne 0x14000a7d7
mov eax, dword [0x140019094]
cmp dword [rdi + 4], eax
jne 0x14000a7d7
mov eax, dword [0x140019098]
cmp dword [rdi + 8], eax
jne 0x14000a7d7
mov eax, dword [0x14001909c]
cmp dword [rdi + 0xc], eax
je 0x14000ac36
lea rax, [rbp + 8]
mov r12d, 1
lea r9, [0x140016b48]
lea rcx, [0x140019ea0]
xor edx, edx
mov r8d, r12d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x14000ac32
cmp dword [rbx], r15d
je 0x14000a85d
mov rax, qword [rbx + 8]
mov rcx, qword [rbp + 8]
lea r9, [rbp + 0x40]
mov r8d, r12d
mov rdx, rdi
movups xmm0, xmmword [rax]
movdqu xmmword [rbp + 0x40], xmm0
mov rax, qword [rcx]
test r14d, r14d
je 0x14000a84a
cmp dword [rbx], r12d
jne 0x14000a838
call qword [rax + 0x28]
jmp 0x14000a83b
call qword [rax + 0x38]
mov esi, eax
test eax, eax
jns 0x14000a857
mov rcx, qword [rbp + 8]
jmp 0x14000ac39
cmp dword [rbx], r12d
jne 0x14000a854
call qword [rax + 0x30]
jmp 0x14000a857
call qword [rax + 0x40]
add rbx, 0x10
jmp 0x14000a807
test r14d, r14d
jne 0x14000ac32
lea r8d, [r14 + 0x40]
lea rdx, [rbp + 0xd0]
mov rcx, rdi
call qword [sym.imp.ole32.dll_StringFromGUID2]
lea rcx, [rbp + 0xd0]
mov rbx, r15
call qword [sym.imp.MSVCR110.dll_wcslen]
mov ecx, 0xffffffff
add eax, r12d
movsxd rsi, eax
mov eax, 0x80000000
add rsi, rsi
add rax, rsi
cmp rax, rcx
ja 0x14000a950
or r14, 0xffffffffffffffff
cmp esi, 0x400
jg 0x14000a8ea
movsxd rdi, esi
mov rcx, rdi
call fcn.140010568
test al, al
je 0x14000a8ea
lea rax, [rdi + 0xf]
cmp rax, rdi
ja 0x14000a8d7
movabs rax, 0xffffffffffffff0
and rax, 0xfffffffffffffff0
call fcn.140011c50
sub rsp, rax
lea rdi, [rsp + 0x60]
jmp 0x14000a916
movsxd rcx, esi
mov rax, r14
sub rax, rcx
cmp rax, 0x10
jb 0x14000acdf
add rcx, 0x10
call qword [sym.imp.MSVCR110.dll_malloc]
test rax, rax
je 0x14000a950
mov qword [rax], r15
mov rbx, rax
lea rdi, [rax + 0x10]
test rdi, rdi
je 0x14000a950
mov qword [rsp + 0x38], r15
xor edx, edx
mov qword [rsp + 0x30], r15
lea r8, [rbp + 0xd0]
lea ecx, [rdx + 3]
mov r9d, r14d
mov dword [rsp + 0x28], esi
mov byte [rdi], r15b
mov qword [rsp + 0x20], rdi
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
neg eax
sbb rsi, rsi
and rsi, rdi
jmp 0x14000a953
mov rsi, r15
test rsi, rsi
je 0x14000ac2d
mov edi, 0x80
lea r8, str.CLSID_
lea rcx, [rbp + 0x50]
mov edx, edi
call qword [sym.imp.MSVCR110.dll_strcpy_s]
lea r12d, [rdi - 0x74]
test eax, eax
je 0x14000a9a0
cmp eax, r12d
je 0x14000ac7f
cmp eax, 0x16
je 0x14000ac79
cmp eax, 0x22
je 0x14000ac79
cmp eax, 0x50
jne 0x14000ac73
lea rcx, [rbp + 0x50]
mov r8, rsi
mov rdx, rdi
call qword [sym.imp.MSVCR110.dll_strcat_s]
test eax, eax
je 0x14000a9d8
cmp eax, r12d
je 0x14000ac91
cmp eax, 0x16
je 0x14000ac8b
cmp eax, 0x22
je 0x14000ac8b
cmp eax, 0x50
jne 0x14000ac85
lea r8, str.Required_Categories
lea rcx, [rbp + 0x50]
mov rdx, rdi
call qword [sym.imp.MSVCR110.dll_strcat_s]
test eax, eax
je 0x14000aa14
cmp eax, r12d
je 0x14000aca3
cmp eax, 0x16
je 0x14000ac9d
cmp eax, 0x22
je 0x14000ac9d
cmp eax, 0x50
jne 0x14000ac97
lea r8, [rbp + 0x50]
lea rcx, [rbp + 0x10]
mov r9d, 0x20019
mov rdx, 0xffffffff80000000
mov qword [rbp + 0x28], 0xffffffff80000000
mov dword [rbp + 0x30], r15d
mov qword [rbp + 0x38], r15
mov qword [rbp + 0x10], r15
mov dword [rbp + 0x18], r15d
mov qword [rbp + 0x20], r15
mov dword [rbp], r15d
call fcn.14000cf48
test eax, eax
jne 0x14000aac9
mov rdi, qword [rbp + 0x10]
mov qword [rsp + 0x58], r15
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x48], r15
mov qword [rsp + 0x40], r15
mov qword [rsp + 0x38], r15
lea rax, [rbp]
mov qword [rsp + 0x30], r15
mov rcx, rdi
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov qword [rsp + 0x28], r15
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyA]
movsxd r14, eax
test rdi, rdi
je 0x14000aaa8
mov rcx, rdi
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov qword [rbp + 0x10], r15
mov dword [rbp + 0x18], r15d
test r14, r14
jne 0x14000aac4
cmp dword [rbp], r15d
jne 0x14000aac4
lea rdx, [rbp + 0x50]
lea rcx, [rbp + 0x28]
call fcn.14000b674
mov edi, 0x80
lea r8, str.CLSID_
lea rcx, [rbp + 0x50]
mov rdx, rdi
call qword [sym.imp.MSVCR110.dll_strcpy_s]
test eax, eax
je 0x14000ab05
cmp eax, r12d
je 0x14000acb5
cmp eax, 0x16
je 0x14000acaf
cmp eax, 0x22
je 0x14000acaf
cmp eax, 0x50
jne 0x14000aca9
lea rcx, [rbp + 0x50]
mov r8, rsi
mov rdx, rdi
call qword [sym.imp.MSVCR110.dll_strcat_s]
test eax, eax
je 0x14000ab3d
cmp eax, r12d
je 0x14000acc7
cmp eax, 0x16
je 0x14000acc1
cmp eax, 0x22
je 0x14000acc1
cmp eax, 0x50
jne 0x14000acbb
lea r8, str.Implemented_Categories
lea rcx, [rbp + 0x50]
mov rdx, rdi
call qword [sym.imp.MSVCR110.dll_strcat_s]
test eax, eax
je 0x14000ab79
cmp eax, r12d
je 0x14000acd9
cmp eax, 0x16
je 0x14000acd3
cmp eax, 0x22
je 0x14000acd3
cmp eax, 0x50
jne 0x14000accd
lea r8, [rbp + 0x50]
lea rcx, [rbp + 0x10]
mov r9d, 0x20019
mov rdx, 0xffffffff80000000
call fcn.14000cf48
mov rdi, qword [rbp + 0x10]
test eax, eax
jne 0x14000ac04
mov qword [rsp + 0x58], r15
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x48], r15
mov qword [rsp + 0x40], r15
mov qword [rsp + 0x38], r15
lea rax, [rbp]
mov qword [rsp + 0x30], r15
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rdi
mov qword [rsp + 0x28], r15
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyA]
movsxd rsi, eax
test rdi, rdi
je 0x14000abec
mov rcx, rdi
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rdi, r15
test rsi, rsi
jne 0x14000ac04
cmp dword [rbp], r15d
jne 0x14000ac04
lea rdx, [rbp + 0x50]
lea rcx, [rbp + 0x28]
call fcn.14000b674
test rdi, rdi
je 0x14000ac12
mov rcx, rdi
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rcx, 0xffffffff80000000
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x14000ac2d
mov rcx, rbx
mov rbx, qword [rbx]
call qword [sym.imp.MSVCR110.dll_free]
test rbx, rbx
jne 0x14000ac21
mov rcx, qword [rbp + 8]
mov esi, r15d
test rcx, rcx
je 0x14000ac44
mov rdx, qword [rcx]
call qword [rdx + 0x10]
mov eax, esi
mov rcx, qword [rbp + 0x150]
xor rcx, rbp
call fcn.140011780
mov rbx, qword [rbp + 0x1a0]
mov rsi, qword [rbp + 0x1a8]
lea rsp, [rbp + 0x160]
pop r15
pop r14
pop r12
pop rdi
pop rbp
ret
call sub.mfc110.dll_Ordinal_2288
int3
call sub.mfc110.dll_Ordinal_2288
int3
call sub.mfc110.dll_Ordinal_2290
int3
call sub.mfc110.dll_Ordinal_2288
int3
call sub.mfc110.dll_Ordinal_2288
int3
call sub.mfc110.dll_Ordinal_2290
int3
call sub.mfc110.dll_Ordinal_2288
int3
call sub.mfc110.dll_Ordinal_2288
int3
call sub.mfc110.dll_Ordinal_2290
int3
call sub.mfc110.dll_Ordinal_2288
int3
call sub.mfc110.dll_Ordinal_2288
int3
call sub.mfc110.dll_Ordinal_2290
int3
call sub.mfc110.dll_Ordinal_2288
int3
call sub.mfc110.dll_Ordinal_2288
int3
call sub.mfc110.dll_Ordinal_2290
int3
call sub.mfc110.dll_Ordinal_2288
int3
call sub.mfc110.dll_Ordinal_2288
int3
call sub.mfc110.dll_Ordinal_2290
int3
mov ecx, 0x80070216
call fcn.140001008
int3