SdbpOpenDatabaseInMemory

VOID *__fastcall SdbpOpenDatabaseInMemory(VOID *a1, INT64 a2, INT64 a3){
  int v3; 
  _QWORD *v5; 
  VOID *v6; 
  __int64 v8; 
  __int64 v9; 
  v3 = a2;
  v8 = 0i64;
  LODWORD(v9) = 0;
  v5 = AslAlloc(a1, 0x580ui64, a3);
  v6 = v5;
  if( v5 )
  {
    *((_DWORD *)v5 + 4) = 0;
    *((_DWORD *)v5 + 6) |= 1u;
    *v5 = 0i64;
    v5[1] = a1;
    *((_DWORD *)v5 + 5) = v3;
    if( (unsigned int)SdbpReadMappedData((INT64)v5, 0i64, &v8, 0xCui64) )
    {
      if( (unsigned int)SdbpValidateAndApplyCompatFlags((__int64)v6, &v8) )
        return v6;
    }
    else
    {
      AslLogCallPrintf(1ui64, "SdbpOpenDatabaseInMemory", 0x458ui64, "Can't read database header", v8, v9);
    }
    ExFreePoolWithTag(v6, 0x74705041u);
  }
  else
  {
    AslLogCallPrintf(1ui64, "SdbpOpenDatabaseInMemory", 0x44Dui64, "Failed to allocate DB structure", v8, v9);
  }
  return 0i64;
}

Referenced by:

SdbInitDatabaseInMemory
SdbpOpenCompressedDatabase