Function at 0x40c920
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4886c0
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x730
push ebx
xor ebx, ebx
mov dword [ebp - 4], ebx
push esi
mov dword [ebp - 0x1c], ebx
mov ecx, dword [ebp + 8]
push edi
call fcn.004313dc
push 0x206
lea ecx, [ebp - 0x532]
mov dword [ebp - 4], ebx
xor eax, eax
push ebx
mov esi, 1
push ecx
mov dword [ebp - 0x1c], esi
mov word [ebp - 0x534], ax
call fcn.00420e90
add esp, 0xc
xor eax, eax
lea esp, [esp]
movzx ecx, word [eax + str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall_]
mov word [ebp + eax - 0x534], cx
add eax, 2
cmp cx, bx
jne 0x40c980
push 0x4a25ec
lea edx, [ebp - 0xa0]
push edx
mov ecx, 0x4b46b8
call fcn.00431879
push 0x4b3db0
lea ecx, [ebp - 0x124]
push ecx
mov ecx, eax
mov dword [ebp - 4], esi
call fcn.00431850
mov ecx, eax
mov byte [ebp - 4], 2
call fcn.0043153d
mov edx, eax
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x40c9d0
lea edi, [ebp - 0x534]
sub eax, edx
add edi, 0xfffffffe
mov cx, word [edi + 2]
add edi, 2
cmp cx, bx
jne 0x40c9e6
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x124]
mov byte [ebp - 4], 1
call fcn.004313e9
lea ecx, [ebp - 0xa0]
mov byte [ebp - 4], 0
call fcn.004313e9
lea edx, [ebp - 0x10]
push edx
push 0xf023f
push ebx
mov ebx, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
lea eax, [ebp - 0x534]
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call ebx
test eax, eax
jne 0x40caab
xor ecx, ecx
push 0x206
push ecx
lea edx, [ebp - 0x32a]
push edx
mov word [ebp - 0x32c], cx
call fcn.00420e90
add esp, 0xc
lea eax, [ebp - 0x14]
push eax
mov eax, dword [ebp - 0x10]
lea ecx, [ebp - 0x32c]
push ecx
lea edx, [ebp - 0x18]
push edx
push 0
push str.UninstallString
push eax
mov dword [ebp - 0x14], 0x208
mov dword [ebp - 0x18], 1
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x40caa1
lea ecx, [ebp - 0x32c]
push ecx
mov ecx, dword [ebp + 8]
call fcn.0043156f
mov edx, dword [ebp - 0x10]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp + 8]
call fcn.00431514
cmp al, 1
jne 0x40cc10
xor eax, eax
push 0x206
push eax
lea ecx, [ebp - 0x32a]
push ecx
mov word [ebp - 0x32c], ax
call fcn.00420e90
add esp, 0xc
xor eax, eax
jmp 0x40cae0
movzx ecx, word [eax + str.SOFTWARE_]
mov word [ebp + eax - 0x32c], cx
add eax, 2
test cx, cx
jne 0x40cae0
push 0x4a2578
lea edx, [ebp - 0x124]
push edx
mov ecx, 0x4b46b8
call fcn.00431879
push 0x4b3db0
lea ecx, [ebp - 0xa0]
push ecx
mov ecx, eax
mov dword [ebp - 4], 3
call fcn.00431850
mov ecx, eax
mov byte [ebp - 4], 4
call fcn.0043153d
mov edx, eax
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40cb34
lea edi, [ebp - 0x32c]
sub eax, edx
add edi, 0xfffffffe
lea ebx, [ebx]
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x40cb50
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0xa0]
mov byte [ebp - 4], 3
call fcn.004313e9
lea ecx, [ebp - 0x124]
mov byte [ebp - 4], 0
call fcn.004313e9
lea edx, [ebp - 0x10]
push edx
push 0xf023f
push 0
lea eax, [ebp - 0x32c]
push eax
push reloc.gdiplus.dll_Ordinal_1
call ebx
test eax, eax
jne 0x40cc10
xor ecx, ecx
push 0x206
push ecx
lea edx, [ebp - 0x73a]
push edx
mov word [ebp - 0x73c], cx
call fcn.00420e90
add esp, 0xc
lea eax, [ebp - 0x18]
push eax
mov eax, dword [ebp - 0x10]
lea ecx, [ebp - 0x73c]
push ecx
lea edx, [ebp - 0x14]
push edx
push 0
push str.UninstallString
push eax
mov dword [ebp - 0x18], 0x208
mov dword [ebp - 0x14], 1
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x40cc06
lea ecx, [ebp - 0x73c]
push ecx
mov ecx, dword [ebp + 8]
call fcn.0043156f
mov edx, dword [ebp - 0x10]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ebx, dword [ebp + 8]
mov ecx, ebx
or edi, 0xffffffff
xor esi, esi
call fcn.004313fa
test eax, eax
jle 0x40cc7d
push esi
mov ecx, ebx
call fcn.00431540
cmp ax, 0x5c
jne 0x40cc33
mov edi, esi
mov ecx, ebx
inc esi
call fcn.004313fa
cmp esi, eax
jl 0x40cc23
cmp edi, 0xffffffff
je 0x40cc7d
mov ecx, ebx
call fcn.004313fa
cmp edi, eax
je 0x40cc7d
inc edi
push edi
lea eax, [ebp - 0xa0]
push eax
mov ecx, ebx
call fcn.0043192a
push eax
mov ecx, ebx
mov dword [ebp - 4], 5
call fcn.00431550
lea ecx, [ebp - 0xa0]
mov byte [ebp - 4], 0
call fcn.004313e9
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov eax, ebx
pop ebx
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret