SdbGetDatabaseID

NTSTATUS __stdcall SdbGetDatabaseID(_DB *pdb, VOID *pguidDB){
  _DB v2; 
  NTSTATUS v3; 
  unsigned int FirstTag; 
  unsigned int v7; 
  _DB *v8; 
  INT8 *v10; 
  UINT64 v11; 

  v2 = pdb[6];
  v3 = 0;
  if( (v2 & 2) == 0 )
  {
    FirstTag = SdbFindFirstTag(pdb, 0i64, 0x7001u);
    if( FirstTag )
    {
      v7 = SdbFindFirstTag(pdb, FirstTag, 0x9007u);
      if( v7 )
      {
        v8 = pdb + 7;
        if( !SdbReadBinaryTag(pdb, v7, pdb + 7, 0x10ui64) )
        {
          AslLogCallPrintf(1ui64, (INT8 *)"SdbGetDatabaseID", 0x1C3ui64, (INT8 *)"Failed to read database id 0x%lx");
          return v3;
        }
        pdb[6] |= 2u;
        v2 = pdb[6];
        goto LABEL_6;
      }
      v10 = (INT8 *)"Failed to get the database id";
      v11 = 446i64;
    }
    else
    {
      v10 = "Failed to get root tag";
      v11 = 440i64;
    }
    AslLogCallPrintf(1ui64, (INT8 *)"SdbGetDatabaseID", v11, v10);
    return v3;
  }
  v8 = pdb + 7;
LABEL_6:
  if( (v2 & 2) != 0 )
  {
    memmove(pguidDB, v8, 0x10u);
    return 1;
  }
  return v3;
}

Referenced by:

SdbReadEntryInformation
SdbpValidateAndApplyCompatFlags