Function at 0x4069c0
Capabilities:
Create process on windows
Query or enumerate registry value

Disassembly:
sub esp, 0x96c
mov eax, dword [0x46be4c]
xor eax, esp
mov dword [esp + 0x968], eax
push edi
mov edi, dword [esp + 0x974]
cmp edi, 1
mov dword [esp + 4], 0
je 0x406a06
cmp edi, 2
je 0x406a22
xor eax, eax
pop edi
mov ecx, dword [esp + 0x968]
xor ecx, esp
call fcn.0044027a
add esp, 0x96c
ret
push str.2304
push str.2.30
call fcn.004055e0
add esp, 8
cmp eax, 1
je 0x4069ee
cmp eax, 2
je 0x4069ee
lea eax, [esp + 8]
push eax
push 0x20019
push 0
push str.SOFTWARECanonVDCSETUP
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x406c8c
push 0x104
push eax
lea ecx, [esp + 0x70]
push ecx
mov dword [esp + 0x1c], 1
mov dword [esp + 0x18], 0x104
call fcn.004413c0
add esp, 0xc
lea edx, [esp + 0xc]
push edx
mov edx, dword [esp + 0xc]
lea eax, [esp + 0x6c]
push eax
lea ecx, [esp + 0x18]
push ecx
push 0
push str.Path
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x406c81
push ebx
mov ebx, dword [sym.imp.USER32.dll_MessageBoxA]
push ebp
mov ebp, dword [esp + 0x980]
cmp ebp, 1
push esi
mov esi, dword [sym.imp.USER32.dll_wsprintfA]
jne 0x406ad7
lea eax, [esp + 0x74]
push eax
lea ecx, [esp + 0x17c]
push str.CURRENT_DIRECTORY_PATH:__s_
push ecx
call esi
add esp, 0xc
push 0
push str.Tool_VDCServiceControl__000
lea edx, [esp + 0x180]
push edx
push 0
call ebx
lea eax, [esp + 0x74]
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x406ae0
sub eax, edx
cmp byte [esp + eax + 0x73], 0x5c
push str.AuVDC.EXE
je 0x406b0b
lea eax, [esp + 0x78]
push eax
push 0x45ce28
lea ecx, [esp + 0x584]
push ecx
jmp 0x406b1d
lea edx, [esp + 0x78]
push edx
push 0x45ccb8
lea eax, [esp + 0x584]
push eax
call esi
add esp, 0x10
cmp edi, 1
jne 0x406b41
push str.__stop
lea ecx, [esp + 0x57c]
push 0x400
push ecx
call fcn.00442464
add esp, 0xc
cmp ebp, 1
jne 0x406b73
lea edx, [esp + 0x578]
push edx
lea eax, [esp + 0x17c]
push str.Command_Line:__s_
push eax
call esi
add esp, 0xc
push 0
push str.Tool_VDCServiceControl__001
lea ecx, [esp + 0x180]
push ecx
push 0
call ebx
push 0x44
lea edx, [esp + 0x34]
push 0
push edx
call fcn.004413c0
add esp, 0xc
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x7c]
push edx
push 0
push 0x4000020
push 0
push 0
push 0
lea eax, [esp + 0x598]
push eax
push 0
mov dword [esp + 0x58], 0x44
mov word [esp + 0x88], 5
mov dword [esp + 0x84], 1
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
mov dword [esp + 0x10], eax
je 0x406c21
cmp edi, 1
jne 0x406c0e
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
mov edi, dword [sym.imp.USER32.dll_FindWindowA]
xor ebp, ebp
push 0x3e8
call esi
push str.VdcDispatcher
push str.VdcAppClass
call edi
test eax, eax
je 0x406c07
add ebp, 1
cmp ebp, 0x3c
jl 0x406be8
mov ebp, dword [esp + 0x984]
cmp ebp, 1
jne 0x406c52
push 0
push str.Tool_VDCServiceControl__002
push str.CreateProcess_OK
jmp 0x406c4e
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp ebp, 1
jne 0x406c52
push eax
lea ecx, [esp + 0x17c]
push str.CreateProcess_ERROR:__d_
push ecx
call esi
add esp, 0xc
push 0
push str.Tool_VDCServiceControl__003
lea edx, [esp + 0x180]
push edx
push 0
call ebx
mov eax, dword [esp + 0x20]
test eax, eax
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
je 0x406c6b
push eax
call esi
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x24]
test eax, eax
je 0x406c7e
push eax
call esi
mov dword [esp + 0x24], 0
pop esi
pop ebp
pop ebx
mov eax, dword [esp + 8]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [esp + 0x96c]
mov eax, dword [esp + 4]
pop edi
xor ecx, esp
call fcn.0044027a
add esp, 0x96c
ret