SdbpGetExeEntryFlags
NTSTATUS __stdcall SdbpGetExeEntryFlags(_DB *pdb, UINT64 tiExe, UINT64 *pdwFlags){
NTSTATUS v4;
unsigned int v5;
unsigned int FirstTag;
NTSTATUS EntryFlags;
int v9;
unsigned int v10;
unsigned int v11;
unsigned int v13;
INT8 *v14;
UINT64 v15;
int DWORDTag;
UINT64 dwFlags;
UINT8 pBuffer[16];
v4 = 0;
*(_OWORD *)pBuffer = 0i64;
LODWORD(dwFlags) = 0;
v5 = tiExe;
FirstTag = SdbFindFirstTag(pdb, tiExe, 0x9004u);
if( !FirstTag )
{
v14 = (INT8 *)"Failed to read TAG_EXE_ID for tiExe 0x%x";
v15 = 482i64;
LABEL_12:
AslLogCallPrintf(1ui64, (INT8 *)"SdbpGetExeEntryFlags", v15, v14);
return v4;
}
if( !SdbReadBinaryTag(pdb, FirstTag, pBuffer, 0x10ui64) )
{
v14 = (INT8 *)"Failed to read the GUID for tiExe 0x%x";
v15 = 487i64;
goto LABEL_12;
}
EntryFlags = SdbGetEntryFlags((_GUID *)pBuffer, &dwFlags);
v9 = EntryFlags != 0 ? dwFlags : 0;
v10 = SdbFindFirstTag(pdb, v5, 0x700Du);
if( v10 )
{
v9 |= 0x1000u;
v13 = SdbFindFirstTag(pdb, v10, 0x4010u);
if( v13 )
{
DWORDTag = SdbReadDWORDTag(pdb, v13, 0);
if( DWORDTag == 2 )
v9 |= 0x2000u;
}
}
v11 = SdbFindFirstTag(pdb, v5, 0x4032u);
if( v11 )
v9 |= (unsigned int)SdbReadDWORDTag(pdb, v11, 0) << 16;
*(_DWORD *)pdwFlags = v9;
return 1;
}Referenced by:
SdbpCheckForMatch