Function at 0x405650
Capabilities:
Query or enumerate registry value
Read .ini file

Disassembly:
sub esp, 0x138
mov eax, dword [0x4834f0]
xor eax, esp
mov dword [esp + 0x134], eax
mov eax, dword [str.VID_0ac8PID_0331]
mov ecx, dword [0x46f13c]
mov edx, dword [0x46f140]
push ebx
mov ebx, dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
mov dword [esp + 0x24], eax
mov eax, dword [0x46f144]
push ebp
push esi
mov dword [esp + 0x38], eax
mov eax, dword [0x46f12c]
push edi
mov dword [esp + 0x20], eax
mov dword [esp + 0x34], ecx
mov cx, word [0x46f148]
mov dword [esp + 0x38], edx
mov edx, dword [str.vm331Rmv.ini]
lea eax, [esp + 0x10]
push eax
mov word [esp + 0x44], cx
mov ecx, dword [0x46f130]
mov dword [esp + 0x20], edx
mov dl, byte [0x46f134]
push 0x485368
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [esp + 0x30], ecx
mov byte [esp + 0x34], dl
mov dword [esp + 0x20], 0x24
mov dword [esp + 0x24], 1
call ebx
test eax, eax
mov ebp, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
jne 0x40571c
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x48]
push edx
lea eax, [esp + 0x20]
push eax
push 0
push str.RemoveSettingFile
push ecx
call ebp
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x40572f
xor eax, eax
mov edi, edi
mov cl, byte [esp + eax + 0x1c]
mov byte [esp + eax + 0x44], cl
add eax, 1
test cl, cl
jne 0x405720
lea eax, [esp + 0x44]
push eax
push str.szFileName___s_n
call fcn.00404b40
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
add esp, 8
lea ecx, [esp + 0x44]
push ecx
push 0x104
push 0x4857b8
lea edx, [esp + 0x3c]
push edx
push str.DeviceID_0
push str.DrvUninstall
call esi
lea eax, [esp + 0x44]
push eax
push 0x104
push 0x4858bc
push str.NULL
push str.DeviceID_1
push str.DrvUninstall
call esi
lea ecx, [esp + 0x44]
push ecx
push 0x104
push 0x4859c0
push str.NULL
push str.DeviceID_2
push str.DrvUninstall
call esi
lea edx, [esp + 0x44]
push edx
push 0x104
push 0x485ac4
push str.NULL
push str.DeviceID_3
push str.DrvUninstall
call esi
lea eax, [esp + 0x44]
push eax
push 0x104
push 0x485bc8
push str.NULL
push str.DeviceID_4
push str.DrvUninstall
call esi
lea ecx, [esp + 0x44]
push ecx
push 0x104
push 0x485ccc
push str.NULL
push str.DeviceID_5
push str.DrvUninstall
call esi
lea edx, [esp + 0x44]
push edx
push 0x104
push 0x485dd0
push str.NULL
push str.DeviceID_6
push str.DrvUninstall
call esi
lea eax, [esp + 0x44]
push eax
push 0x104
push 0x485ed4
push str.NULL
push str.DeviceID_7
push str.DrvUninstall
call esi
lea ecx, [esp + 0x44]
push ecx
push 0x104
push 0x485fd8
push str.NULL
push str.DeviceID_8
push str.DrvUninstall
call esi
lea edx, [esp + 0x44]
push edx
push 0x104
push 0x4860dc
push str.NULL
push str.DeviceID_9
push str.DrvUninstall
call esi
lea eax, [esp + 0x44]
push eax
push 0x104
push 0x4861e0
push str.NULL
push str.DeviceID_10
push str.DrvUninstall
call esi
lea ecx, [esp + 0x44]
push ecx
push 0x104
push 0x4862e4
push str.NULL
push str.DeviceID_11
push str.DrvUninstall
call esi
lea edx, [esp + 0x44]
push edx
push 0x104
push 0x4863e8
push str.NULL
push str.DeviceID_12
push str.DrvUninstall
call esi
lea eax, [esp + 0x44]
push eax
push 0x104
push 0x4864ec
push str.NULL
push str.DeviceID_13
push str.DrvUninstall
call esi
lea ecx, [esp + 0x44]
push ecx
push 0x104
push 0x4865f0
push str.NULL
push str.DeviceID_14
push str.DrvUninstall
call esi
lea edx, [esp + 0x44]
push edx
push 0x104
push 0x4866f4
push str.NULL
push str.DeviceID_15
push str.DrvUninstall
call esi
lea eax, [esp + 0x44]
push eax
push 0x104
push 0x4867f8
push str.NULL
push str.DeviceID_16
push str.DrvUninstall
call esi
lea ecx, [esp + 0x44]
push ecx
push 0x104
push 0x4868fc
push str.NULL
push str.DeviceID_17
push str.DrvUninstall
call esi
lea edx, [esp + 0x44]
push edx
push 0x104
push 0x486a00
push str.NULL
push str.DeviceID_18
push str.DrvUninstall
call esi
lea eax, [esp + 0x44]
push eax
push 0x104
push 0x486b04
push str.NULL
push str.DeviceID_19
push str.DrvUninstall
call esi
xor edi, edi
mov esi, 0x4857b8
mov edi, edi
push esi
push edi
push str.PIDVID__d____s_n
call fcn.00404b40
add esi, 0x104
add esp, 0xc
add edi, 1
cmp esi, 0x486c08
jl 0x4059d0
mov eax, dword [0x46efd8]
mov ecx, dword [str.Digital_Camera_1]
mov edx, dword [0x46efd4]
mov dword [esp + 0x24], eax
lea eax, [esp + 0x10]
push eax
mov dword [esp + 0x20], ecx
mov ecx, dword [0x46efdc]
mov dword [esp + 0x24], edx
mov dl, byte [0x46efe0]
push 0x485368
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [esp + 0x34], ecx
mov byte [esp + 0x38], dl
mov dword [esp + 0x20], 0x104
call ebx
test eax, eax
jne 0x405a79
lea ecx, [esp + 0x14]
push ecx
push 0x485260
lea edx, [esp + 0x20]
push edx
push eax
mov eax, dword [esp + 0x20]
push str.DSName
push eax
call ebp
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0x485260
push str.DSName___s_n
call fcn.00404b40
add esp, 8
jmp 0x405a91
xor eax, eax
jmp 0x405a80
mov cl, byte [esp + eax + 0x1c]
mov byte [eax + 0x485260], cl
add eax, 1
test cl, cl
jne 0x405a80
mov ecx, dword [esp + 0x144]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
mov al, 1
call fcn.0043e6ad
add esp, 0x138
ret