Function at 0x410190
Capabilities:
Delete registry key
Query or enumerate registry key
Query or enumerate registry value
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xf4
xor ecx, ecx
mov dword [esp + 0x94], ecx
xor edx, edx
mov dword [esp + 0x98], ecx
mov dword [esp + 0x54], edx
mov dword [esp + 0x9c], ecx
mov dword [esp + 0x58], edx
mov dword [esp + 0xa0], ecx
mov dword [esp + 0x5c], edx
mov dword [esp + 0xa4], ecx
mov dword [esp + 0x60], edx
mov dword [esp + 0xa8], ecx
mov dword [esp + 0xac], ecx
mov dword [esp + 0x64], edx
mov dword [esp + 0xb0], ecx
mov dword [esp + 0x68], edx
mov dword [esp + 0x6c], edx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x70], edx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x74], edx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x78], edx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x7c], edx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x80], edx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x84], edx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x88], edx
mov dword [esp + 0x8c], edx
mov dword [esp + 0xb4], ecx
mov dword [esp + 0x90], edx
mov dword [esp + 0xb8], ecx
mov dword [esp + 0xd4], edx
mov dword [esp + 0xbc], ecx
mov dword [esp + 0xd8], edx
mov dword [esp + 0xc0], ecx
mov dword [esp + 0xdc], edx
mov dword [esp + 0xc4], ecx
mov dword [esp + 0xe0], edx
mov dword [esp + 0xc8], ecx
mov dword [esp + 0xcc], ecx
mov dword [esp + 0xe4], edx
mov dword [esp + 0xd0], ecx
mov ecx, dword [esp + 0xf8]
test ecx, ecx
mov dword [esp + 0xe8], edx
mov dword [esp + 0xec], edx
mov dword [esp + 0x24], 0
mov dword [esp + 0xf0], edx
je 0x410776
test eax, eax
je 0x410776
lea ecx, [esp + 0x14]
push ecx
push 0xf003f
push edx
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x410776
mov ecx, dword [esp + 0x14]
push ebx
mov ebx, dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
push ebp
push edi
xor edi, edi
push edi
push edi
push edi
push edi
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0xb4]
push eax
push edi
mov ebp, 0x20
push ecx
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x58], edi
call ebx
test eax, eax
jne 0x41075c
push esi
lea esp, [esp]
mov ecx, dword [esp + 0x24]
lea edx, [esp + 0x14]
push edx
push 0xf003f
push 0
lea eax, [esp + 0xb0]
push eax
push ecx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x410729
lea edx, [esp + 0x10]
push edx
mov edx, dword [esp + 0x18]
lea eax, [esp + 0xe8]
push eax
lea ecx, [esp + 0x48]
push ecx
push 0
push str.ManufacturerTag
push edx
mov dword [esp + 0x28], ebp
mov dword [esp + 0x58], 1
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x4106e4
push str.Canon_Inc.
lea eax, [esp + 0xe8]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x4106e4
push eax
push eax
push eax
push eax
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x78]
push edx
push eax
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x30]
push eax
mov dword [esp + 0x54], 1
mov dword [esp + 0x30], ebp
call ebx
test eax, eax
jne 0x4106e4
jmp 0x4103e0
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x18]
push ecx
push 0xf003f
push 0
lea edx, [esp + 0x70]
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x410687
mov ecx, dword [esp + 0x108]
mov edx, dword [esp + 0x18]
push ecx
push edx
call fcn.0040e600
mov edi, eax
add esp, 8
test edi, edi
jne 0x410677
mov edx, dword [esp + 0x18]
push eax
push eax
push eax
push eax
mov dword [esp + 0x48], eax
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x58]
push ecx
push edi
push edx
mov dword [esp + 0x30], ebp
call ebx
test eax, eax
jne 0x410677
lea esp, [esp]
mov edx, dword [esp + 0x18]
lea eax, [esp + 0x20]
push eax
push 0xf003f
push 0
lea ecx, [esp + 0x50]
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x41061a
mov edx, dword [esp + 0x20]
push eax
push eax
push eax
push eax
mov dword [esp + 0x40], eax
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x98]
push ecx
push 0
push edx
mov dword [esp + 0x30], ebp
call ebx
test eax, eax
jne 0x41060a
mov edi, edi
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x1c]
push eax
push 0xf003f
push 0
lea ecx, [esp + 0x90]
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4105a4
mov edx, dword [esp + 0x1c]
xor esi, esi
push esi
push esi
push esi
push esi
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0xd8]
push ecx
push esi
push edx
mov dword [esp + 0x30], ebp
call ebx
test eax, eax
jne 0x410594
mov edi, edi
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0x2c]
push eax
push 0xf003f
push 0
lea ecx, [esp + 0xd0]
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x41053a
mov eax, dword [esp + 0x108]
mov ecx, dword [esp + 0x2c]
push eax
push ecx
call fcn.0040e600
mov edx, dword [esp + 0x34]
add esp, 8
push edx
mov edi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp edi, 2
je 0x410567
cmp edi, 1
jae 0x410594
mov edx, dword [esp + 0x1c]
push 0
push 0
push 0
push 0
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0xd8]
push ecx
inc esi
push esi
push edx
mov dword [esp + 0x30], ebp
call ebx
test eax, eax
je 0x4104f0
jmp 0x410594
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0xc4]
push eax
push ecx
call fcn.0040a110
add esp, 8
cmp eax, 1
jne 0x410594
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0xc4]
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
mov ecx, dword [esp + 0x1c]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp edi, 2
je 0x4105dd
cmp edi, 1
jae 0x41060a
mov eax, dword [esp + 0x30]
push 0
push 0
push 0
push 0
lea edx, [esp + 0x20]
push edx
mov edx, dword [esp + 0x34]
lea ecx, [esp + 0x98]
inc eax
push ecx
push eax
push edx
mov dword [esp + 0x30], ebp
mov dword [esp + 0x50], eax
call ebx
test eax, eax
je 0x4104a0
jmp 0x41060a
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x84]
push eax
push ecx
call fcn.0040a110
add esp, 8
cmp eax, 1
jne 0x41060a
mov eax, dword [esp + 0x20]
lea edx, [esp + 0x84]
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
mov ecx, dword [esp + 0x20]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp edi, 2
je 0x410650
cmp edi, 1
jae 0x410677
mov eax, dword [esp + 0x38]
push 0
push 0
push 0
push 0
lea edx, [esp + 0x20]
push edx
mov edx, dword [esp + 0x2c]
lea ecx, [esp + 0x58]
inc eax
push ecx
push eax
push edx
mov dword [esp + 0x30], ebp
mov dword [esp + 0x58], eax
call ebx
test eax, eax
je 0x410450
jmp 0x410677
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0x44]
push eax
push ecx
call fcn.0040a110
add esp, 8
cmp eax, 1
jne 0x410677
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x44]
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
mov ecx, dword [esp + 0x18]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp edi, 2
je 0x4106bd
cmp edi, 1
jae 0x4106e4
mov eax, dword [esp + 0x28]
push 0
push 0
push 0
push 0
lea edx, [esp + 0x20]
push edx
mov edx, dword [esp + 0x28]
lea ecx, [esp + 0x78]
inc eax
push ecx
push eax
push edx
mov dword [esp + 0x30], ebp
mov dword [esp + 0x48], eax
call ebx
test eax, eax
je 0x4103e0
jmp 0x4106e4
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x64]
push eax
push ecx
call fcn.0040a110
add esp, 8
cmp eax, 1
jne 0x4106e4
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x64]
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp edi, 2
jne 0x410721
mov eax, dword [esp + 0x24]
lea edx, [esp + 0xa4]
push edx
push eax
call fcn.0040a110
add esp, 8
cmp eax, 1
jne 0x410721
mov edx, dword [esp + 0x24]
lea ecx, [esp + 0xa4]
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x41075b
mov eax, dword [esp + 0x3c]
push 0
push 0
push 0
push 0
lea ecx, [esp + 0x20]
push ecx
inc eax
lea edx, [esp + 0xb8]
push edx
push eax
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x40]
push eax
mov dword [esp + 0x30], ebp
call ebx
test eax, eax
je 0x410330
pop esi
mov ecx, dword [esp + 0x20]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
pop edi
pop ebp
mov eax, 1
pop ebx
add esp, 0xf4
ret
xor eax, eax
add esp, 0xf4
ret