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

Disassembly:
mov r11, rsp
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x4b0
mov qword [rsp + 0x78], 0xfffffffffffffffe
mov qword [r11 + 8], rbx
mov qword [r11 + 0x18], rsi
mov rax, qword [0x14001a128]
xor rax, rsp
mov qword [rsp + 0x4a0], rax
mov rdi, rdx
xor r14d, r14d
mov word [r11 - 0x458], r14w
xor edx, edx
mov r8d, 0x206
lea rcx, [r11 - 0x456]
call fcn.140007500
mov qword [rsp + 0x58], r14
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x44]
xor r8d, r8d
lea edx, [r14 + 2]
xor ecx, ecx
mov rax, qword [0x14001b650]
call qword [rax + 8]
nop
mov ecx, dword [rsp + 0x40]
mov eax, 0x6ac
mul rcx
mov rcx, 0xffffffffffffffff
cmovo rax, rcx
mov rcx, rax
call fcn.14000722c
mov r13, rax
test rax, rax
je 0x140007145
mov r8d, dword [rsp + 0x40]
imul r8, r8, 0x6ac
xor edx, edx
mov rcx, rax
call fcn.140007500
lea r11, [rsp + 0x40]
mov qword [rsp + 0x20], r11
lea r9, [rsp + 0x44]
mov r8d, dword [rsp + 0x44]
mov edx, 2
mov rcx, r13
mov rax, qword [0x14001b650]
call qword [rax + 8]
mov r11d, r14d
cmp dword [rsp + 0x40], r14d
jbe 0x140006b89
mov eax, r11d
imul rax, rax, 0x6ac
lea rdx, [rax + r13 + 0x490]
lea rcx, str.PortName:_s
call fcn.1400057b0
inc r11d
cmp r11d, dword [rsp + 0x40]
jb 0x140006b61
mov edx, 0x7a120
mov rcx, qword [0x14001b660]
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov r12d, r14d
mov dword [rsp + 0x60], r14d
mov rax, qword [rdi]
cmp rax, qword [rdi + 8]
je 0x140006be5
nop dword [rax]
mov rcx, qword [rax]
lea rdx, [rcx + 0x4d8]
mov r8d, dword [rcx + 0x10]
lea rcx, str.PortName:_s_Check:_d_
call fcn.1400057b0
mov rcx, qword [rax]
cmp dword [rcx + 0x10], 0
je 0x140006bd6
inc r12d
add rax, 8
cmp rax, qword [rdi + 8]
jne 0x140006bb0
mov dword [rsp + 0x60], r12d
lea rax, [rsp + 0x58]
mov qword [rsp + 0x20], rax
mov r9d, 0xf003f
xor r8d, r8d
lea rdx, str.SoftwareCanonMFNetworkScannerSelector
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x140006d00
mov esi, r14d
mov dword [rsp + 0x44], 0x104
lea rax, [rsp + 0x70]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], r14
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x20], r14
lea r9, [rsp + 0x44]
lea r8, [rsp + 0x80]
xor edx, edx
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
test eax, eax
jne 0x140006cf5
nop word [rax + rax]
mov ebx, r14d
cmp dword [rsp + 0x40], ebx
jbe 0x140006ca5
nop dword [rax]
mov eax, ebx
imul rax, rax, 0x6ac
lea rdx, [rax + r13 + 0x100]
lea rcx, [rsp + 0x80]
call qword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
je 0x140006c9d
inc ebx
cmp ebx, dword [rsp + 0x40]
jb 0x140006c70
jmp 0x140006ca5
inc esi
cmp ebx, dword [rsp + 0x40]
jb 0x140006cb2
lea rcx, [rsp + 0x80]
call fcn.1400059f0
mov dword [rsp + 0x44], 0x104
lea rax, [rsp + 0x70]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], r14
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x20], r14
lea r9, [rsp + 0x44]
lea r8, [rsp + 0x80]
mov edx, esi
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
test eax, eax
je 0x140006c60
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edx, r14d
mov dword [rsp + 0x48], edx
mov r15, r14
mov rax, qword [rdi + 8]
sub rax, qword [rdi]
sar rax, 3
test rax, rax
je 0x140006de2
nop
mov ebx, r14d
cmp ebx, dword [rsp + 0x40]
jae 0x140006d85
nop dword [rax]
mov rdx, qword [rdi]
mov esi, ebx
imul rsi, rsi, 0x6ac
lea r12, [rsi + r13 + 0x100]
mov rdx, qword [rdx + r15*8]
add rdx, 0x148
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x140006d70
mov rdx, r12
mov rcx, qword [rsi + r13 + 0x488]
call fcn.140005d00
test eax, eax
jne 0x140006d78
inc ebx
cmp ebx, dword [rsp + 0x40]
jb 0x140006d30
mov r12d, dword [rsp + 0x60]
mov edx, dword [rsp + 0x48]
cmp ebx, dword [rsp + 0x40]
jne 0x140006dc3
mov rax, qword [rdi]
mov rcx, qword [rax + r15*8]
add rcx, 0x148
call fcn.1400059f0
mov r11, qword [rdi]
mov rcx, qword [r11 + r15*8]
cmp dword [rcx + 0x10], 0
je 0x140006daf
dec r12d
mov dword [rsp + 0x60], r12d
add rcx, 0x148
call fcn.140002620
mov edx, r14d
mov r15, r14
jmp 0x140006dc8
inc edx
inc r15
mov dword [rsp + 0x48], edx
mov rcx, qword [rdi + 8]
sub rcx, qword [rdi]
sar rcx, 3
mov eax, edx
cmp rax, rcx
jb 0x140006d20
mov r15d, r14d
cmp dword [rsp + 0x40], r14d
jbe 0x140006ff4
mov rbx, r13
mov qword [rsp + 0x48], rbx
nop dword [rax + rax]
cmp word [rbx + 0x100], 0
je 0x140006fda
cmp word [rbx], 0
je 0x140006fda
mov esi, r15d
imul rsi, rsi, 0x6ac
add rsi, r13
mov qword [rsp + 0x60], rsi
lea rcx, [rsi + 0x490]
call fcn.140005df0
test eax, eax
je 0x140006fda
add rsi, 0x100
mov r8, rsi
mov edx, r15d
lea rcx, str.InstallModel_i:_d__s
call fcn.1400057b0
mov rbx, qword [rdi]
cmp rbx, qword [rdi + 8]
je 0x140006eaf
mov rdx, qword [rbx]
add rdx, 0x148
lea rcx, str.PSUModel:_s
call fcn.1400057b0
mov rdx, qword [rbx]
add rdx, 0x148
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
je 0x140006e99
add rbx, 8
cmp rbx, qword [rdi + 8]
jne 0x140006e60
jmp 0x140006ea5
lea rcx, str.MATCH
call fcn.1400057b0
cmp rbx, qword [rdi + 8]
jne 0x140006fd5
mov qword [rsp + 0x20], rsi
lea r9, str.MFNetworkScannerSelector
lea r8, str.SoftwareCanon
lea rdx, str._s_s_s
lea rcx, [rsp + 0x290]
call qword [sym.imp.USER32.dll_wsprintfW]
lea r11, [rsp + 0x58]
mov qword [rsp + 0x20], r11
mov r9d, 0x20019
xor r8d, r8d
lea rdx, [rsp + 0x290]
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x140006fc9
mov rdx, rsi
lea rcx, str.AddPollingThreadListItem:_s
call fcn.1400057b0
mov rcx, qword [rsp + 0x60]
call fcn.140002b80
lea rcx, str.AddPollingThreadListItem:returned
call fcn.1400057b0
mov dword [rsp + 0x50], r14d
mov dword [rsp + 0x68], 4
mov dword [rsp + 0x44], 4
lea rax, [rsp + 0x44]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x68]
xor r8d, r8d
lea rdx, str.Check
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov r8d, dword [rsp + 0x50]
cmp eax, 2
mov r9d, 1
cmove r8d, r9d
mov dword [rsp + 0x50], r8d
mov rdx, rsi
lea rcx, str.UpdatePollingList_:__s__d_
call fcn.1400057b0
cmp dword [rsp + 0x50], 0
je 0x140006fbc
cmp r12d, 0xa
jae 0x140006fbc
mov rcx, qword [rdi]
mov rax, qword [rdi + 8]
sub rax, rcx
sar rax, 3
mov rax, qword [rcx + rax*8 - 8]
mov dword [rax + 0x10], r9d
inc r12d
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x140006fd5
lea rcx, str.No_matching_old_item
call fcn.1400057b0
mov rbx, qword [rsp + 0x48]
inc r15d
add rbx, 0x6ac
mov qword [rsp + 0x48], rbx
cmp r15d, dword [rsp + 0x40]
jb 0x140006e00
mov ebx, 1
cmp dword [rsp + 0x40], 0
jbe 0x14000712c
mov r15, r13
nop word [rax + rax]
mov eax, r14d
imul rax, rax, 0x6ac
add rax, r13
mov qword [rsp + 0x48], rax
lea rsi, [rax + 0x100]
mov r8, rsi
mov edx, r14d
lea rcx, str.InstallModel_i:_d__s
call fcn.1400057b0
cmp word [r15 + 0x100], 0
je 0x140007117
cmp word [r15], 0
je 0x140007117
lea rcx, [rax + 0x490]
call fcn.140005df0
test eax, eax
je 0x140007117
mov rbx, qword [rdi]
cmp rbx, qword [rdi + 8]
je 0x1400070bd
mov rdx, qword [rbx]
add rdx, 0x148
lea rcx, str.PSUModel:_s
call fcn.1400057b0
mov rdx, qword [rbx]
add rdx, 0x148
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
je 0x1400070ab
add rbx, 8
cmp rbx, qword [rdi + 8]
jne 0x140007072
jmp 0x1400070b7
lea rcx, str.MATCH
call fcn.1400057b0
cmp rbx, qword [rdi + 8]
jne 0x140007112
mov rdx, rsi
lea rcx, str.AddPollingThreadListItem:_s
call fcn.1400057b0
mov rbx, qword [0x14001b688]
sub rbx, qword [0x14001b680]
sar rbx, 3
mov rcx, qword [rsp + 0x48]
call fcn.140002b80
cmp eax, ebx
mov ebx, 1
jle 0x140007117
cmp r12d, 0xa
jae 0x140007117
mov rdx, qword [rdi]
mov rax, qword [rdi + 8]
sub rax, rdx
sar rax, 3
mov rax, qword [rdx + rax*8 - 8]
mov dword [rax + 0x10], ebx
inc r12d
jmp 0x140007117
mov ebx, 1
inc r14d
add r15, 0x6ac
cmp r14d, dword [rsp + 0x40]
jb 0x140007010
mov rcx, qword [0x14001b660]
call qword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov rcx, r13
call fcn.1400083a8
mov eax, ebx
jmp 0x140007147
xor eax, eax
mov rcx, qword [rsp + 0x4a0]
xor rcx, rsp
call fcn.140007330
lea r11, [rsp + 0x4b0]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret