Function at 0x14003acf4
Capabilities:
Get common file path
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
mov rax, rsp
push rsi
push rdi
push r12
push r14
push r15
sub rsp, 0x420
mov qword [rsp + 0x58], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rbp
mov rax, qword [0x14010bfc0]
xor rax, rsp
mov qword [rsp + 0x410], rax
mov rbx, rcx
lea r8, str.CScannerUninstaller::Delete____r_n
mov edx, 2
lea rcx, [0x14010f570]
call fcn.140001000
mov r11, qword [rbx]
mov rcx, rbx
call qword [r11 + 0x28]
xor r12d, r12d
cmp qword [rbx + 0xd0], r12
je 0x14003b1a6
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x40], r12
lea r14d, [r12 + 0xf]
mov qword [rsp + 0xd0], r14
mov qword [rsp + 0xc8], r12
mov byte [rsp + 0xb8], r12b
lea rdi, [0x1400c49dc]
mov rcx, rdi
call fcn.1400980d0
mov r8, rax
mov rdx, rdi
lea rcx, [rsp + 0xb0]
call fcn.14000352c
nop
mov qword [rsp + 0xa8], r14
mov qword [rsp + 0xa0], r12
mov byte [rsp + 0x90], r12b
mov rcx, rdi
call fcn.1400980d0
mov r8, rax
mov rdx, rdi
lea rcx, [rsp + 0x88]
call fcn.14000352c
nop
mov byte [rsp + 0x1f0], r12b
mov r15d, 0x103
mov r8, r15
xor edx, edx
lea rcx, [rsp + 0x1f1]
call fcn.1400988d0
mov byte [rsp + 0xe0], r12b
mov r8, r15
xor edx, edx
lea rcx, [rsp + 0xe1]
call fcn.1400988d0
mov dword [rsp + 0x30], r12d
mov byte [rsp + 0x300], r12b
mov r8, r15
xor edx, edx
lea rcx, [rsp + 0x301]
call fcn.1400988d0
lea edi, [r15 + 1]
mov edx, edi
lea rcx, [rsp + 0x300]
call qword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea r8, str._twain_32
mov rdx, rdi
lea rcx, [rsp + 0x300]
call fcn.140098ed8
mov rax, qword [rbx + 0xc8]
mov rsi, qword [rax]
mov qword [rsp + 0x50], rsi
mov rdi, qword [rbx + 0x98]
mov qword [rsp + 0x48], rdi
mov rbp, qword [rbx + 0xc8]
cmp rdi, r12
je 0x14003ae90
cmp rdi, qword [rbx + 0x98]
je 0x14003ae95
call fcn.14009861c
cmp rsi, rbp
je 0x14003b15e
lea rcx, str.SoftwareHewlett_PackardDigitalImaging_
call fcn.1400980d0
mov r8, rax
lea rdx, str.SoftwareHewlett_PackardDigitalImaging_
lea rcx, [rsp + 0xb0]
call fcn.14000352c
cmp rdi, r12
jne 0x14003aed0
call fcn.14009861c
mov r11, r12
jmp 0x14003aed3
mov r11, qword [rdi]
cmp rsi, qword [r11 + 0x30]
jne 0x14003aede
call fcn.14009861c
lea rdx, [rsi + 0x18]
or rsi, 0xffffffffffffffff
mov r9, rsi
xor r8d, r8d
lea rcx, [rsp + 0xb0]
call fcn.140006164
lea rcx, str.DeviceInstances_
call fcn.1400980d0
mov r8, rax
lea rdx, str.DeviceInstances_
lea rcx, [rsp + 0xb0]
call fcn.14000627c
lea rdx, [rsp + 0xb8]
cmp qword [rsp + 0xd0], 0x10
cmovae rdx, qword [rsp + 0xb8]
mov dword [rsp + 0x28], r12d
lea rax, [rsp + 0x38]
mov qword [rsp + 0x20], rax
mov ebp, 0x20019
mov r9d, ebp
xor r8d, r8d
mov rcx, 0xffffffff80000002
call fcn.14004e070
cmp eax, r12d
jne 0x14003b13b
mov edi, r12d
mov r9d, r15d
lea r8, [rsp + 0x1f0]
xor edx, edx
mov rcx, qword [rsp + 0x38]
call qword [sym.imp.ADVAPI32.dll_RegEnumKeyA]
cmp eax, r12d
jne 0x14003b13b
mov r9, rsi
xor r8d, r8d
lea rdx, [rsp + 0xb0]
lea rcx, [rsp + 0x88]
call fcn.140002458
lea rcx, [rsp + 0x1f0]
call fcn.1400980d0
mov r8, rax
lea rdx, [rsp + 0x1f0]
lea rcx, [rsp + 0x88]
call fcn.14000627c
lea rcx, str.FunctionsScan
call fcn.1400980d0
mov r8, rax
lea rdx, str.FunctionsScan
lea rcx, [rsp + 0x88]
call fcn.14000627c
lea rdx, [rsp + 0x90]
cmp qword [rsp + 0xa8], 0x10
cmovae rdx, qword [rsp + 0x90]
mov dword [rsp + 0x28], r12d
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
mov r9d, ebp
xor r8d, r8d
mov rcx, 0xffffffff80000002
call fcn.14004e070
cmp eax, r12d
je 0x14003b05e
lea r8, [rsp + 0x90]
cmp qword [rsp + 0xa8], 0x10
cmovae r8, qword [rsp + 0x90]
lea rdx, str._s_doesnt_exist__r_n
lea rcx, [0x14010f570]
call fcn.14004b9f0
jmp 0x14003b118
mov dword [rsp + 0x30], 0x104
lea rax, [rsp + 0x30]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0xe0]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea rdx, str.ImagingClassIndex
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
cmp eax, r12d
jne 0x14003b10e
lea r8, [rsp + 0xe0]
lea rdx, str.Index_value__s__r_n
lea rcx, [0x14010f570]
call fcn.14004b9f0
lea r8, [rsp + 0x300]
lea rdx, [rsp + 0xe0]
mov rcx, rbx
call fcn.140041e68
mov qword [rsp + 0x80], r14
mov qword [rsp + 0x78], r12
mov byte [rsp + 0x68], r12b
lea rcx, [rsp + 0xe0]
call fcn.1400980d0
mov r8, rax
lea rdx, [rsp + 0xe0]
lea rcx, [rsp + 0x60]
call fcn.14000352c
lea rdx, [rsp + 0x60]
mov rcx, rbx
call fcn.140039d40
mov rcx, qword [rsp + 0x40]
call fcn.14004e608
inc edi
mov r9d, r15d
lea r8, [rsp + 0x1f0]
mov edx, edi
mov rcx, qword [rsp + 0x38]
call qword [sym.imp.ADVAPI32.dll_RegEnumKeyA]
cmp eax, r12d
je 0x14003af89
mov rcx, qword [rsp + 0x38]
call fcn.14004e608
lea rcx, [rsp + 0x48]
call fcn.140039bf4
mov rsi, qword [rsp + 0x50]
mov rdi, qword [rsp + 0x48]
jmp 0x14003ae7b
cmp qword [rsp + 0xa8], 0x10
jb 0x14003b176
mov rcx, qword [rsp + 0x90]
call fcn.14006127c
mov qword [rsp + 0xa8], r14
mov qword [rsp + 0xa0], r12
mov byte [rsp + 0x90], r12b
cmp qword [rsp + 0xd0], 0x10
jb 0x14003b1a6
mov rcx, qword [rsp + 0xb8]
call fcn.14006127c
lea r8, str.CScannerUninstaller::Delete____r_n
mov edx, 4
lea rcx, [0x14010f570]
call fcn.140001000
xor eax, eax
mov rcx, qword [rsp + 0x410]
xor rcx, rsp
call fcn.140061100
lea r11, [rsp + 0x420]
mov rbx, qword [r11 + 0x38]
mov rbp, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rsi
ret