Function at 0x140028564
Capabilities:
Query or enumerate registry value

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x1a0
lea rbp, [rsp + 0x60]
mov qword [rbp + 0x58], 0xfffffffffffffffe
mov qword [rbp + 0x180], rbx
mov rax, qword [0x140078790]
xor rax, rbp
mov qword [rbp + 0x130], rax
mov r13, r8
mov rdi, rdx
mov qword [rbp + 0x50], r8
xor r8d, r8d
lea rdx, str.CComponentRegistrar::GetComponents
lea rcx, [rbp + 0xc0]
call fcn.14002de00
nop
xor ebx, ebx
mov dword [rbp + 8], ebx
mov qword [rbp + 0x28], rbx
mov dword [rbp + 0x30], ebx
mov qword [rbp + 0x38], rbx
mov r9d, 0x20019
mov r8, rdi
mov rdx, 0xffffffff80000002
lea rcx, [rbp + 0x28]
call fcn.14000bad4
mov edi, 0x1fff0000
test edi, eax
je 0x1400285fd
cmp eax, 0x80000000
jb 0x140028614
mov ecx, eax
call fcn.140032390
test eax, eax
je 0x140028614
movzx ecx, ax
or ecx, 0x80070000
test eax, eax
cmovle ecx, eax
call fcn.140032390
mov qword [rsp + 0x58], rbx
mov qword [rsp + 0x50], rbx
lea rax, [rbp + 4]
mov qword [rsp + 0x48], rax
lea rax, [rbp + 0xc]
mov qword [rsp + 0x40], rax
lea rax, [rbp + 0x18]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], rbx
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov r15, qword [rbp + 0x28]
mov rcx, r15
call qword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
test edi, eax
je 0x14002866f
cmp eax, 0x80000000
jb 0x140028686
mov ecx, eax
call fcn.140032390
test eax, eax
je 0x140028686
movzx ecx, ax
or ecx, 0x80070000
test eax, eax
cmovle ecx, eax
call fcn.140032390
cmp dword [rbp + 0x18], ebx
je 0x1400289f4
mov r8d, dword [rbp + 0xc]
add r8d, 4
mov dword [rbp + 0xc], r8d
mov r9d, dword [rbp + 4]
add r9d, 4
mov dword [rbp + 4], r9d
lea ecx, [r8 + 1]
add rcx, rcx
lea rax, [rcx + 0xf]
movabs rdx, 0xffffffffffffff0
cmp rax, rcx
ja 0x1400286c4
mov rax, rdx
and rax, 0xfffffffffffffff0
call fcn.140033c40
sub rsp, rax
lea rdi, [rsp + 0x60]
mov qword [rbp + 0x10], rdi
lea ecx, [r9 + 1]
add rcx, rcx
lea rax, [rcx + 0xf]
cmp rax, rcx
ja 0x1400286ec
mov rax, rdx
and rax, 0xfffffffffffffff0
call fcn.140033c40
sub rsp, rax
lea r12, [rsp + 0x60]
mov qword [rbp + 0x48], r12
mov word [rdi + r8*2], bx
mov eax, dword [rbp + 4]
mov word [r12 + rax*2], bx
mov ecx, ebx
mov dword [rbp], ebx
mov eax, dword [rbp + 0xc]
mov dword [rbp + 0x20], eax
mov eax, dword [rbp + 4]
mov dword [rbp + 0x1c], eax
mov edx, ecx
inc ecx
mov dword [rbp], ecx
lea rax, [rbp + 0x1c]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], r12
lea rax, [rbp + 0x24]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
lea r9, [rbp + 0x20]
mov r8, rdi
mov rcx, r15
call qword [sym.imp.ADVAPI32.dll_RegEnumValueW]
test eax, eax
jne 0x1400289f4
mov eax, dword [rbp + 0x24]
dec eax
cmp eax, 1
jbe 0x140028769
mov ecx, dword [rbp]
jmp 0x140028713
mov edx, 0x3a
mov rcx, r12
call fcn.140035824
mov r14, rax
test rax, rax
je 0x140028764
mov word [rax], bx
lea rcx, [rbp + 0xa0]
call fcn.1400033e0
nop
mov rdx, r12
lea rcx, [rbp + 0xa0]
call fcn.140023a54
nop
cmp word [r14 + 2], bx
jne 0x1400287bf
mov rcx, qword [rbp + 0xb0]
test rcx, rcx
je 0x140028764
call fcn.140009640
mov qword [rbp + 0xb0], rbx
jmp 0x140028764
mov rsi, rbx
lea rdx, [rbp + 0x88]
mov rcx, r13
call fcn.14002b594
mov rcx, qword [rax]
test rcx, rcx
je 0x1400287e4
mov rcx, qword [rcx]
test rcx, rcx
je 0x1400287e4
mov rsi, qword [rcx]
mov rdi, qword [rax + 0x10]
lea rdx, [rbp + 0x70]
mov rcx, r13
call fcn.14002b690
mov rdx, rax
test rsi, rsi
mov rcx, rbx
je 0x140028802
mov rcx, qword [rsi]
mov rax, qword [rax]
test rax, rax
jne 0x14002880f
mov rax, rbx
jmp 0x140028812
mov rax, qword [rax]
cmp rcx, rax
je 0x14002881c
call fcn.14003795c
cmp rdi, qword [rdx + 0x10]
sete al
xor al, 1
test al, al
je 0x14002888e
test rdi, rdi
jne 0x140028833
call fcn.14003795c
test rsi, rsi
je 0x140028889
mov rax, qword [rsi]
test rax, rax
je 0x140028889
cmp rdi, qword [rax + 8]
jne 0x14002884b
call fcn.14003795c
mov rcx, qword [rdi + 0x10]
add rcx, 0x10
mov r8d, 0x10
lea rdx, [rbp + 0xa0]
call fcn.1400345d0
test eax, eax
je 0x14002888e
mov rax, qword [rsi]
test rax, rax
jne 0x140028876
call fcn.14003795c
cmp rdi, qword [rax + 8]
jne 0x140028881
call fcn.14003795c
mov rdi, qword [rdi]
jmp 0x1400287e8
call fcn.14003795c
lea rdx, [rbp + 0x70]
mov rcx, r13
call fcn.14002b690
mov rdx, rax
test rsi, rsi
mov rcx, rbx
je 0x1400288a8
mov rcx, qword [rsi]
mov rax, qword [rax]
test rax, rax
jne 0x1400288b5
mov rax, rbx
jmp 0x1400288b8
mov rax, qword [rax]
cmp rcx, rax
je 0x1400288c2
call fcn.14003795c
cmp rdi, qword [rdx + 0x10]
sete al
xor al, 1
xor edx, edx
lea rcx, [rbp + 0xc0]
test al, al
je 0x140028902
lea r8, str.Component_already_loaded___skip_now
call fcn.140030824
nop
mov rcx, qword [rbp + 0xb0]
test rcx, rcx
je 0x1400288fd
call fcn.140009640
mov qword [rbp + 0xb0], rbx
jmp 0x1400289eb
mov r9, qword [rbp + 0xb0]
lea r8, str.Adding_item:__ls
call fcn.140030824
mov ecx, 0x38
call fcn.1400331b4
mov rdi, rax
mov qword [rbp + 0x60], rax
test rax, rax
je 0x140028968
mov qword [rax], rbx
mov qword [rax + 8], rbx
movups xmm0, xmmword [rbp + 0xa0]
movdqu xmmword [rax + 0x10], xmm0
mov qword [rax + 0x20], rbx
mov qword [rax + 0x28], rbx
mov dword [rax + 0x30], 0x80004005
lea r8, [r14 + 2]
mov rdx, qword [rbp + 0x10]
mov rcx, rax
call fcn.14002a098
mov rcx, rdi
call fcn.1400290f4
nop
jmp 0x14002896b
mov rdi, rbx
mov qword [rbp + 0x40], rdi
test rdi, rdi
jne 0x14002897e
mov ecx, 0x8007000e
call fcn.140032390
cmp dword [rdi + 0x30], ebx
jge 0x1400289b3
lea r8, str.Cant_load
xor edx, edx
lea rcx, [rbp + 0xc0]
call fcn.140030824
mov rcx, rdi
call fcn.140023758
mov edx, 0x38
mov rcx, rdi
call fcn.1400331f8
nop
jmp 0x1400288e5
lea rdx, [rbp + 0x40]
mov rcx, r13
call fcn.14002b840
nop
jmp 0x1400288e5
mov rdi, qword [rbp + 0x10]
jmp 0x140028764
test r15, r15
je 0x140028a06
mov rcx, r15
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov qword [rbp + 0x28], rbx
mov dword [rbp + 0x30], ebx
mov r8d, dword [rbp + 8]
xor edx, edx
lea rcx, [rbp + 0xc0]
call fcn.140030b9c
nop
lea rcx, [rbp + 0xc0]
call fcn.14002e7a8
mov eax, dword [rbp + 8]
mov rcx, qword [rbp + 0x130]
xor rcx, rbp
call fcn.140033cb0
mov rbx, qword [rbp + 0x180]
lea rsp, [rbp + 0x140]
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret