KseAddHardwareId

NTSTATUS __stdcall KseAddHardwareId(PWCHAR HardwareId){
  WCHAR v1; 
  volatile signed __int64 *v2; 
  _ETHREAD *CurrentThread; 
  _QWORD *v5; 
  __int64 v6; 
  NTSTATUS v7; 
  char v8; 
  __int64 v10; 
  INT64 a2[2]; 
  __int128 v12; 
  __int128 v13; 
  __int64 v14; 
  v2 = (volatile signed __int64 *)qword_140C50370;
  *(_OWORD *)a2 = 0i64;
  v12 = 0i64;
  v13 = 0i64;
  v14 = 0i64;
  if( dword_140C50324 != 2 )
  {
    v10 = ((unsigned __int8)_InterlockedExchangeAdd(&KsepHistoryErrorsIndex, 1u) + 1) & 0x3F;
    KsepHistoryErrors[2 * v10 + 1] = -1073741823;
    KsepHistoryErrors[2 * v10] = 656075;
    if( (KsepDebugFlag & 2) != 0 )
      KsepDebugPrint(0i64, "KSE: Cannot add hardware id until the kshim engine is initialized\n");
    KsepLogError(0, "KSE: Cannot add hardware id until the kshim engine is initialized\n");
    return 0;
  }
  if( !HardwareId )
    return 0;
  RtlInitUnicodeString((PUNICODE_STRING)((char *)&v13 + 8), HardwareId, v1);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  ExAcquirePushLockExclusiveEx((UINT64)v2, 0i64);
  v5 = KsepCacheLookup((INT64)v2, (INT64)a2);
  if( v5 )
  {
LABEL_7:
    v7 = 0;
    goto LABEL_8;
  }
  KsepPoolAllocatePaged(0x38ui64);
  v5 = (_QWORD *)v6;
  if( v6 && KsepStringDuplicate((UNICODE_STRING *)(v6 + 40), HardwareId) >= 0 )
  {
    KsepCacheInsert((__int64)v2, (__int64)v5);
    goto LABEL_7;
  }
  v7 = -1073741801;
LABEL_8:
  v8 = _InterlockedExchangeAdd64(v2, 0xFFFFFFFFFFFFFFFFui64);
  if( (v8 & 2) != 0 && (v8 & 4) == 0 )
    ExfTryToWakePushLock(v2);
  KeAbPostRelease((PVOID)v2);
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  if( v7 < 0 )
  {
    if( v5 )
    {
      KsepStringFree((UNICODE_STRING *)(v5 + 5));
      KsepPoolFreePaged(v5);
    }
  }
  return v7;
}

Referenced by:

PiProcessNewDeviceNode