SdbInitDatabaseInMemory

VOID *__stdcall SdbInitDatabaseInMemory(VOID *pDatabaseImage, UINT64 dwImageSize, INT64 a3){
  unsigned int v3; 
  VOID *v5; 
  INT64 v6; 
  _DB *v7; 
  _DB *v9; 

  v3 = dwImageSize;
  v5 = AslAlloc(pDatabaseImage, 1008, a3);
  if( v5 )
  {
    v7 = SdbpOpenDatabaseInMemory(pDatabaseImage, v3, v6);
    *((_QWORD *)v5 + 1) = v7;
    if( v7 )
    {
      *((_DWORD *)v5 + 6) = 1;
      *((_DWORD *)v5 + 7) = 1;
      *((_DWORD *)v5 + 14) = 2;
      *((_QWORD *)v5 + 6) = v7;
      *((_OWORD *)v5 + 2) = *(_OWORD *)(v7 + 7);
      SdbpInitializeMatchers((tagSDBCONTEXT *)v5);
      return v5;
    }
    AslLogCallPrintf(1ui64, (INT8 *)"SdbInitDatabaseInMemory", 0x416ui64, (INT8 *)"Unable to open main database");
    v9 = (_DB *)*((_QWORD *)v5 + 1);
    if( v9 )
      SdbCloseDatabaseRead(v9);
    ExFreePoolWithTag(v5, 0x74705041u);
  }
  else
  {
    AslLogCallPrintf(1ui64, (INT8 *)"SdbInitDatabaseInMemory", 0x40Dui64, (INT8 *)"Failed to allocate sdbcontext");
  }
  return 0i64;
}

Referenced by:

KsepSdbBootInitialize
KsepSdbMapToMemory
PiInitializeDDB
PpBootDDBHelper