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