Function at 0x40c720
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4884c0
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.004311dc
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.00420c90
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 0x40c780
push 0x4a15ec
lea edx, [ebp - 0xa0]
push edx
mov ecx, 0x4b36b8
call fcn.00431679
push 0x4b2db0
lea ecx, [ebp - 0x124]
push ecx
mov ecx, eax
mov dword [ebp - 4], esi
call fcn.00431650
mov ecx, eax
mov byte [ebp - 4], 2
call fcn.0043133d
mov edx, eax
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x40c7d0
lea edi, [ebp - 0x534]
sub eax, edx
add edi, 0xfffffffe
mov cx, word [edi + 2]
add edi, 2
cmp cx, bx
jne 0x40c7e6
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.004311e9
lea ecx, [ebp - 0xa0]
mov byte [ebp - 4], 0
call fcn.004311e9
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 0x40c8ab
xor ecx, ecx
push 0x206
push ecx
lea edx, [ebp - 0x32a]
push edx
mov word [ebp - 0x32c], cx
call fcn.00420c90
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 0x40c8a1
lea ecx, [ebp - 0x32c]
push ecx
mov ecx, dword [ebp + 8]
call fcn.0043136f
mov edx, dword [ebp - 0x10]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp + 8]
call fcn.00431314
cmp al, 1
jne 0x40ca10
xor eax, eax
push 0x206
push eax
lea ecx, [ebp - 0x32a]
push ecx
mov word [ebp - 0x32c], ax
call fcn.00420c90
add esp, 0xc
xor eax, eax
jmp 0x40c8e0
movzx ecx, word [eax + str.SOFTWARE_]
mov word [ebp + eax - 0x32c], cx
add eax, 2
test cx, cx
jne 0x40c8e0
push 0x4a1578
lea edx, [ebp - 0x124]
push edx
mov ecx, 0x4b36b8
call fcn.00431679
push 0x4b2db0
lea ecx, [ebp - 0xa0]
push ecx
mov ecx, eax
mov dword [ebp - 4], 3
call fcn.00431650
mov ecx, eax
mov byte [ebp - 4], 4
call fcn.0043133d
mov edx, eax
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40c934
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 0x40c950
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.004311e9
lea ecx, [ebp - 0x124]
mov byte [ebp - 4], 0
call fcn.004311e9
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 0x40ca10
xor ecx, ecx
push 0x206
push ecx
lea edx, [ebp - 0x73a]
push edx
mov word [ebp - 0x73c], cx
call fcn.00420c90
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 0x40ca06
lea ecx, [ebp - 0x73c]
push ecx
mov ecx, dword [ebp + 8]
call fcn.0043136f
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.004311fa
test eax, eax
jle 0x40ca7d
push esi
mov ecx, ebx
call fcn.00431340
cmp ax, 0x5c
jne 0x40ca33
mov edi, esi
mov ecx, ebx
inc esi
call fcn.004311fa
cmp esi, eax
jl 0x40ca23
cmp edi, 0xffffffff
je 0x40ca7d
mov ecx, ebx
call fcn.004311fa
cmp edi, eax
je 0x40ca7d
inc edi
push edi
lea eax, [ebp - 0xa0]
push eax
mov ecx, ebx
call fcn.0043172a
push eax
mov ecx, ebx
mov dword [ebp - 4], 5
call fcn.00431350
lea ecx, [ebp - 0xa0]
mov byte [ebp - 4], 0
call fcn.004311e9
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