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

Disassembly:
mov eax, 0x2010
call fcn.004b4db0
mov eax, dword [0x6306b0]
xor eax, esp
mov dword [esp + 0x200c], eax
push esi
mov esi, ecx
push edi
mov ecx, 0x631bd8
call fcn.00403be0
mov ecx, dword [eax]
mov edx, dword [ecx + 0xb0]
push 0x56d508
push str.Action_start__s.
push eax
call edx
push 0x5651b0
xor edi, edi
call fcn.00402dd0
add esp, 0x10
test eax, eax
je 0x4894c1
mov eax, dword [esi]
mov edx, dword [eax + 0xc]
mov ecx, esi
call edx
mov esi, eax
neg esi
sbb esi, esi
neg esi
jmp 0x4894d7
push 0x565dac
call fcn.00402dd0
add esp, 4
mov esi, eax
neg esi
sbb esi, esi
add esi, 1
call fcn.004025b0
cmp eax, 2
jne 0x48950e
call fcn.00401ea0
test eax, eax
je 0x48950e
test esi, esi
je 0x48950e
mov ecx, 0x631bd8
call fcn.00403bc0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x168]
call eax
mov edi, eax
test edi, edi
jne 0x4896bb
call fcn.00401ea0
test eax, eax
je 0x48953c
call fcn.00401ff0
test eax, eax
je 0x48953c
mov ecx, 0x631bd8
call fcn.00403bc0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x3c]
push 5
call eax
mov edi, eax
jmp 0x4896bb
call fcn.00401ea0
test eax, eax
je 0x4896bb
push 0x5651b0
call fcn.00402dd0
add esp, 4
test eax, eax
jne 0x48956f
push 0x565dac
call fcn.00402dd0
add esp, 4
test eax, eax
je 0x4896bb
lea ecx, [esp + 8]
push ecx
push 0xf003f
push 0
push str.SOFTWARECanonDIASSETUPDIASUser
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4896bb
mov ecx, 0x631bd8
call fcn.00403bb0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x24]
call eax
mov edx, dword [eax]
mov edx, dword [edx + 0xc]
lea ecx, [esp + 0x14]
push ecx
push str.TEMPPATH
mov ecx, eax
call edx
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
push str.InsDrv.ini
lea ecx, [esp + 0x18]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatW]
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea edx, [esp + 0x14]
push edx
push 0x400
lea eax, [esp + 0x81c]
push eax
push 0x562d4c
push str.Product
push str.Installer_Info
call esi
lea ecx, [esp + 0x14]
push ecx
push 0x400
lea edx, [esp + 0x101c]
push edx
push 0x562d4c
push str.Version
push str.Installer_Info
call esi
lea eax, [esp + 0xc]
push eax
lea ecx, [esp + 0x1818]
push ecx
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x18]
push edx
push 0
lea eax, [esp + 0x824]
push eax
push ecx
mov dword [esp + 0x24], 0x800
mov dword [esp + 0x28], 1
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x4896b0
lea edx, [esp + 0x1814]
push edx
lea eax, [esp + 0x1018]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
je 0x4896b0
lea ecx, [esp + 0x1014]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea edx, [eax + eax + 2]
push edx
mov edx, dword [esp + 0xc]
lea eax, [esp + 0x1018]
push eax
push 1
push 0
lea ecx, [esp + 0x824]
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
test eax, eax
je 0x4896b0
mov edi, 0x25
mov eax, dword [esp + 8]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, 0x631bd8
call fcn.00403be0
mov ecx, dword [eax]
mov edx, dword [ecx + 0xb0]
push edi
push 0x56d508
push str.Action_ended__s._Return_value__08x.
push eax
call edx
mov ecx, dword [esp + 0x2024]
add esp, 0x10
mov eax, edi
pop edi
pop esi
xor ecx, esp
call fcn.004b4b34
add esp, 0x2010
ret