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