struct ITypeLib *__thiscall OLE_TYPEMGR::LookupTypeLib(OLE_TYPEMGR *this, wchar_t *Str1, enum tagSYSKIND a3)
{
OLE_TYPEMGR *that; // esi
int idx2; // edi
int v5; // eax
ITypeLib *typelibObj; // edi
int v8; // ecx
const wchar_t *v9; // ebx
unsigned int MaxCount; // [esp+Ch] [ebp-8h]
int idx; // [esp+10h] [ebp-4h]
that = this;
MaxCount = wcslen(Str1);
EnterCriticalSection(&g_OletmgrCriticalSection);
idx2 = 0;
if ( that->FIndex <= 0 )
{
LABEL_5:
typelibObj = 0;
}
else
{
idx = 0;
while ( 1 )
{
v5 = &that->FAppdata[idx];
if ( *v5 )
{
v8 = *(v5 + 40);
if ( a3 == v8 || v8 == -1 && a3 == *(v5 + 32) )
{
v9 = *(v5 + 4);
if ( MaxCount == BstrLen(*(v5 + 4)) && !_wcsnicmp(Str1, v9, MaxCount) )
break;
}
}
++idx;
if ( ++idx2 >= that->FIndex )
goto LABEL_5;
}
typelibObj = that->FAppdata[idx2].FTypeLib;
typelibObj->lpVtbl->AddRef(typelibObj);
}
LeaveCriticalSection(&g_OletmgrCriticalSection);
return typelibObj;
}
OLE_TYPEMGR::LookupTypeLib正确逆向结果
最新推荐文章于 2018-04-10 21:32:37 发布