SdbpGetExeEntryFlags
__int64 __fastcall SdbpGetExeEntryFlags(__int64 a1, UINT64 a2, int *a3){
unsigned int v4;
unsigned int v5;
unsigned int FirstTag;
int EntryFlags;
int v9;
unsigned int v10;
unsigned int v11;
unsigned int v13;
const CHAR *v14;
UINT64 v15;
int DWORDTag;
UINT64 dwFlags;
_GUID pGuid;
v4 = 0;
pGuid = 0i64;
LODWORD(dwFlags) = 0;
v5 = a2;
FirstTag = SdbFindFirstTag(a1, a2, 36868);
if( !FirstTag )
{
v14 = "Failed to read TAG_EXE_ID for tiExe 0x%x";
v15 = 482i64;
LABEL_12:
AslLogCallPrintf(1ui64, "SdbpGetExeEntryFlags", v15, v14, v5);
return v4;
}
if( !(unsigned int)SdbReadBinaryTag(a1, FirstTag, &pGuid, 0x10u) )
{
v14 = "Failed to read the GUID for tiExe 0x%x";
v15 = 487i64;
goto LABEL_12;
}
EntryFlags = SdbGetEntryFlags(&pGuid, &dwFlags);
v9 = EntryFlags != 0 ? dwFlags : 0;
v10 = SdbFindFirstTag(a1, v5, 28685);
if( v10 )
{
v9 |= 0x1000u;
v13 = SdbFindFirstTag(a1, v10, 16400);
if( v13 )
{
DWORDTag = SdbReadDWORDTag(a1, v13, 0i64);
if( DWORDTag == 2 )
v9 |= 0x2000u;
}
}
v11 = SdbFindFirstTag(a1, v5, 16434);
if( v11 )
v9 |= (unsigned int)SdbReadDWORDTag(a1, v11, 0i64) << 16;
*a3 = v9;
return 1;
}Referenced by:
SdbpCheckForMatch