KsepDbCacheInsertDevice

INT64 __fastcall KsepDbCacheInsertDevice(WCHAR *SourceString, INT64 rdx0){
  unsigned int v4; 
  _ETHREAD *CurrentThread; 
  UINT64 v6; 
  WCHAR v7; 
  volatile INT64 *v8; 
  char v9; 
  INT64 a2[5]; 
  struct _UNICODE_STRING DestinationString; 
  v4 = -1073741811;
  memset((INT64)a2, 0i64);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v6 = qword_140C50368;
  --*((_WORD *)CurrentThread + 242);
  ExAcquirePushLockExclusiveEx(v6, 0i64);
  RtlInitUnicodeString(&DestinationString, SourceString, v7);
  if( !KsepCacheLookup(qword_140C50368, (INT64)a2) )
  {
    KsepCacheInsert(qword_140C50368, rdx0);
    v4 = 0;
  }
  v8 = (volatile INT64 *)qword_140C50368;
  v9 = _InterlockedExchangeAdd64((volatile signed __int64 *)qword_140C50368, 0xFFFFFFFFFFFFFFFFui64);
  if( (v9 & 2) != 0 && (v9 & 4) == 0 )
    ExfTryToWakePushLock(v8);
  KeAbPostRelease((PVOID)v8);
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  return v4;
}

Referenced by:

KseQueryDeviceData
KseQueryDeviceDataList