Function at 0x40d250
Capabilities:
Delete registry value
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x55a9d1
mov eax, dword fs:[0]
push eax
mov eax, 0x1044c
call fcn.00539330
mov eax, dword [0x5b4450]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
xor edi, edi
push edi
lea eax, [ebp - 0x1044c]
mov esi, ecx
push str.Tool_VDCModuleUninstallCheck
push eax
mov dword [ebp - 0x10430], esi
call fcn.0040ac70
add esp, 0xc
push edi
push esi
push str.lpszDriver___s__bDebug___d
lea ecx, [ebp - 0x1044c]
push 1
push ecx
mov dword [ebp - 4], edi
call fcn.0040aed0
add esp, 0x14
call fcn.0044033f
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x40d2d6
push 0x80004005
call fcn.004010a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x10438], eax
mov byte [ebp - 4], 1
mov dword [ebp - 0x10434], edi
mov dword [ebp - 0x1043c], edi
mov dword [ebp - 0x10424], edi
call fcn.00442c4d
mov eax, dword [eax + 4]
mov dword [ebp - 0x10454], eax
add eax, 0xe0
push eax
lea ecx, [ebp - 0x10438]
call fcn.00401520
push 0xfffe
lea ecx, [ebp - 0x10420]
push edi
push ecx
call fcn.005373f0
mov ebx, dword [ebp - 0x10438]
mov eax, dword [ebx - 0xc]
add esp, 0xc
lea edx, [eax + eax]
push edx
lea eax, [ebp - 0x10420]
push ebx
push eax
call fcn.0053afa0
add esp, 0xc
lea ecx, [ebp - 0x1042c]
push ecx
lea edx, [ebp - 0x10420]
push 0x58ac04
push edx
mov dword [ebp - 0x1042c], edi
call fcn.00534921
mov esi, eax
add esp, 0xc
cmp esi, edi
je 0x40d721
lea ebx, [ebx]
mov eax, dword [ebp - 0x10430]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
je 0x40d3b3
lea ecx, [ebp - 0x1042c]
push ecx
push 0x58ac04
push 0
call fcn.00534921
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x40d380
jmp 0x40d721
test esi, esi
je 0x40d721
mov esi, dword [sym.imp.WINSPOOL.DRV_EnumPrintersW]
lea edx, [ebp - 0x1043c]
push edx
lea eax, [ebp - 0x10434]
push eax
push 0
push 0
push 2
push 0
push 6
call esi
test eax, eax
jne 0x40d43b
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
je 0x40d43b
push 0
push str.return___08x
lea ecx, [ebp - 0x1044c]
push 2
push ecx
call fcn.0040aed0
add ebx, 0xfffffff0
add esp, 0x10
mov byte [ebp - 4], 0
lea edx, [ebx + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x40d422
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
lea ecx, [ebp - 0x1044c]
mov dword [ebp - 4], 0xffffffff
call fcn.0040ae50
xor eax, eax
jmp 0x40d76c
mov ecx, dword [ebp - 0x10434]
push ecx
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov edi, eax
mov dword [ebp - 0x10430], edi
test edi, edi
je 0x40d71f
mov ecx, dword [ebp - 0x10434]
lea edx, [ebp - 0x1043c]
push edx
lea eax, [ebp - 0x10434]
push eax
push ecx
push edi
push 2
push 0
push 6
call esi
cmp eax, 1
jne 0x40d595
mov eax, dword [ebp - 0x1043c]
test eax, eax
je 0x40d58b
mov dword [ebp - 0x10450], 0
add edi, 0x10
mov eax, dword [ebp - 0x10454]
add eax, 0xe0
push eax
lea ecx, [ebp - 0x10438]
call fcn.00401520
push 0xfffe
lea edx, [ebp - 0x10420]
push 0
push edx
call fcn.005373f0
mov ebx, dword [ebp - 0x10438]
mov eax, dword [ebx - 0xc]
add esp, 0xc
add eax, eax
push eax
lea ecx, [ebp - 0x10420]
push ebx
push ecx
call fcn.0053afa0
add esp, 0xc
lea edx, [ebp - 0x1042c]
push edx
lea eax, [ebp - 0x10420]
push 0x58ac04
push eax
call fcn.00534921
add esp, 0xc
test eax, eax
je 0x40d52c
mov ecx, dword [edi]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
je 0x40d555
lea edx, [ebp - 0x1042c]
push edx
push 0x58ac04
push 0
call fcn.00534921
add esp, 0xc
test eax, eax
jne 0x40d504
mov eax, dword [ebp - 0x10450]
inc eax
add edi, 0x54
mov esi, 1
mov dword [ebp - 0x10450], eax
cmp eax, dword [ebp - 0x1043c]
jb 0x40d49c
mov edi, dword [ebp - 0x10430]
jmp 0x40d59b
mov eax, dword [ebp - 0x10430]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalFree]
add ebx, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [ebx + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d422
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebx
call edx
jmp 0x40d422
mov dword [ebp - 0x10424], 1
mov esi, dword [ebp - 0x10424]
push edi
call dword [sym.imp.KERNEL32.dll_GlobalFree]
cmp esi, 1
jne 0x40d71f
lea eax, [ebp - 0x10428]
push eax
push 0x2001f
push 0
push str.SOFTWARECanonVDCSETUPVDCUser
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x40d562
call fcn.0044033f
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40d5e7
push 0x80004005
call fcn.004010a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x10424], eax
mov edi, dword [ebp - 0x10454]
lea ecx, [edi + 0xe8]
push ecx
lea ecx, [ebp - 0x10424]
mov byte [ebp - 4], 2
call fcn.00401520
mov edx, dword [ebp - 0x10424]
mov eax, dword [ebp - 0x10428]
mov esi, dword [sym.imp.ADVAPI32.dll_RegDeleteValueW]
push edx
push eax
call esi
add edi, 0xec
push edi
lea ecx, [ebp - 0x10424]
call fcn.00401520
mov ecx, dword [ebp - 0x10424]
mov edx, dword [ebp - 0x10428]
push ecx
push edx
call esi
mov edi, dword [sym.imp.ADVAPI32.dll_RegEnumValueW]
lea eax, [ebp - 0x10444]
push eax
lea ecx, [ebp - 0x218]
push ecx
lea edx, [ebp - 0x10458]
push edx
mov edx, dword [ebp - 0x10428]
xor esi, esi
push esi
lea eax, [ebp - 0x10440]
push eax
lea ecx, [ebp - 0x420]
push ecx
push esi
push edx
mov dword [ebp - 0x10440], 0x104
mov dword [ebp - 0x10444], 0x208
call edi
test eax, eax
jne 0x40d6e3
lea eax, [ebp - 0x10444]
push eax
lea ecx, [ebp - 0x218]
push ecx
lea edx, [ebp - 0x10458]
push edx
mov edx, dword [ebp - 0x10428]
push 0
lea eax, [ebp - 0x10440]
push eax
lea ecx, [ebp - 0x420]
push ecx
inc esi
push esi
push edx
mov dword [ebp - 0x10440], 0x104
mov dword [ebp - 0x10444], 0x208
call edi
test eax, eax
je 0x40d69b
mov eax, dword [ebp - 0x10428]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor ecx, ecx
cmp ecx, esi
sbb edi, edi
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x10424]
add eax, 0xfffffff0
inc edi
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40d721
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40d721
xor edi, edi
push edi
push str.return___08x
lea ecx, [ebp - 0x1044c]
push 2
push ecx
call fcn.0040aed0
add ebx, 0xfffffff0
add esp, 0x10
mov byte [ebp - 4], 0
lea edx, [ebx + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x40d758
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
lea ecx, [ebp - 0x1044c]
mov dword [ebp - 4], 0xffffffff
call fcn.0040ae50
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005337cb
mov esp, ebp
pop ebp
ret