SdbCloseDatabaseRead

VOID __stdcall SdbCloseDatabaseRead(_DB *pdb){
  __int64 v2; 
  _DB v3; 
  _ASL_STRING_HASH *v4; 
  void *v5; 

  v2 = *((_QWORD *)pdb + 170);
  if( v2 && *(_DWORD *)(v2 + 16) == 1 )
  {
    if( *(_QWORD *)(v2 + 8) )
    {
      ExFreePoolWithTag(*(PVOID *)(v2 + 8), 0x74705041u);
      v2 = *((_QWORD *)pdb + 170);
    }
    if( v2 )
      ExFreePoolWithTag((PVOID)v2, 0x74705041u);
    *((_QWORD *)pdb + 170) = 0i64;
    v4 = (_ASL_STRING_HASH *)*((_QWORD *)pdb + 171);
    if( v4 )
    {
      AslHashFree(v4);
      *((_QWORD *)pdb + 171) = 0i64;
    }
  }
  v3 = pdb[6];
  if( (v3 & 8) != 0 && (v3 & 1) != 0 )
  {
    v5 = (void *)*((_QWORD *)pdb + 1);
    if( v5 )
    {
      ExFreePoolWithTag(v5, 0x74705041u);
      *((_QWORD *)pdb + 1) = 0i64;
      pdb[5] = 0;
    }
  }
  AslFileMappingDelete(*(_QWORD *)pdb);
  ExFreePoolWithTag(pdb, 0x74705041u);
}

Referenced by:

SdbInitDatabaseInMemory
SdbReleaseDatabase
SdbpCloseLocalDatabaseEx
SdbpOpenCompressedDatabase