Function at 0x103cae7
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x17c
push ebx
lea eax, [ebp - 8]
push esi
lea ecx, [ebp + 8]
mov dword [ebp - 4], 0
mov dword [ebp - 8], 1
push edi
push eax
push ecx
call fcn.01037875
mov esi, eax
test esi, esi
je 0x103cb54
push 0xfd
mov eax, dword [0x1056d98]
push str.c:_ntprivatectoleuiole2.0_appscommonchicago..comsrvr.c
mov edi, dword [sym.imp.USER32.dll_wsprintfA]
push eax
push dword [0x104ed80]
call edi
add esp, 0x10
push str.StringFromCLSID:
push dword [0x104ed80]
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov eax, dword [0x104ed80]
push eax
push esi
call fcn.0102e6d7
jmp 0x103cb5a
mov edi, dword [sym.imp.USER32.dll_wsprintfA]
test esi, 0x80000000
je 0x103cb89
cmp dword [ebp - 8], 0
je 0x103cd2d
push 0x30
mov eax, dword [0x10566c0]
push str.Cl32Test___ansi
push str.ERROR:_non_NULL_lpsz_returned_from_StringFromCLSID_on_error.
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x103cd2d
cmp dword [ebp - 8], 0
jne 0x103cbac
push 0x30
mov eax, dword [0x10566c0]
push str.Cl32Test___ansi
push str.ERROR:_NULL_lpsz_returned_from_StringFromCLSID.
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x103cd2d
xor ebx, ebx
lea eax, [ebp - 4]
push eax
lea ecx, [ebp + 8]
mov dword [ebp - 4], 1
push ecx
call fcn.01037712
test eax, 0x80000000
mov esi, eax
je 0x103cbf1
cmp dword [ebp - 4], ebx
je 0x103cbe8
push 0x30
mov eax, dword [0x10566c0]
push str.Cl32Test___ansi
push str.ERROR:_non_NULL_lpsz_returned_from_ProgIDFromCLSID_on_error.
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [ebp - 4], 0
jmp 0x103cc0f
cmp dword [ebp - 4], 0
jne 0x103cc0f
push 0x30
mov eax, dword [0x10566c0]
push str.Cl32Test___ansi
push str.ERROR:_NULL_lpsz_returned_from_ProgIDFromCLSID.
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
push dword [ebp - 8]
push str.CLSID_s
lea ecx, [ebp - 0x64]
push ecx
call edi
add esp, 0xc
lea ecx, [ebp - 0x10]
lea edx, [ebp - 0x64]
push ecx
push edx
push 0x80000000
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
jne 0x103cc64
mov dword [ebp - 0x14], 0x50
lea eax, [ebp - 0x14]
push eax
push 0x1054bf8
push 0
push dword [ebp - 0x10]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueA]
test eax, eax
jne 0x103cc5b
mov ebx, 1
push dword [ebp - 0x10]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp - 4], 0
mov ecx, dword [ebp - 4]
jne 0x103cc72
mov ecx, str.not_found
mov eax, 0x1054bf8
test ebx, ebx
jne 0x103cc80
mov eax, str.not_found
push eax
lea edx, [ebp - 0x17c]
push ecx
push dword [ebp - 8]
push str._s_r_nProgID:__s_r_nMain_User_Type:__s
push edx
call edi
add esp, 0x14
lea ecx, [ebp - 0x17c]
push 0x40
push str.Cl32Test___ansi
push ecx
push dword [0x10566c0]
call dword [sym.imp.USER32.dll_MessageBoxA]
lea ecx, [ebp - 0xc]
push ecx
push 1
call dword [sym.imp.ole32.dll_CoGetMalloc]
test eax, eax
je 0x103ccfa
push 0x13b
mov eax, dword [0x1056d98]
push str.c:_ntprivatectoleuiole2.0_appscommonchicago..comsrvr.c
push eax
push dword [0x104ed80]
call edi
add esp, 0x10
push str.OleGetMalloc:
push dword [0x104ed80]
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push dword [0x104ed80]
push esi
call fcn.0102e6d7
jmp 0x103cd2d
cmp dword [ebp - 8], 0
je 0x103cd0e
push dword [ebp - 8]
mov ecx, dword [ebp - 0xc]
push dword [ebp - 0xc]
mov eax, dword [ecx]
call dword [eax + 0x14]
cmp dword [ebp - 4], 0
je 0x103cd22
push dword [ebp - 4]
mov ecx, dword [ebp - 0xc]
push dword [ebp - 0xc]
mov eax, dword [ecx]
call dword [eax + 0x14]
mov eax, dword [ebp - 0xc]
push dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10