KseLookupHardwareId

NTSTATUS __stdcall KseLookupHardwareId(PWCHAR HardwareId){
  WCHAR v1; 
  WCHAR v2; 
  PWCHAR v3; 
  ULONG_PTR v4; 
  NTSTATUS v6; 
  WCHAR v7; 
  PWCHAR v8; 
  _ETHREAD *v9; 
  _ETHREAD *CurrentThread; 
  _QWORD *i; 
  WCHAR *v13; 
  INT64 a2[2]; 
  __int128 v15; 
  struct _UNICODE_STRING DestinationString; 
  __int64 v17; 
  v2 = *HardwareId;
  v3 = HardwareId + 1;
  v4 = qword_140C50370;
  *(_OWORD *)a2 = 0i64;
  if( v2 != 42 )
    v3 = HardwareId;
  v15 = 0i64;
  v6 = -1073741275;
  DestinationString = 0i64;
  v17 = 0i64;
  v7 = *v3;
  if( *v3 )
  {
    v8 = v3;
    while( v7 != 42 && v7 != 63 )
    {
      v7 = *++v8;
      if( !*v8 )
        goto LABEL_8;
    }
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --*((_WORD *)CurrentThread + 242);
    ExAcquirePushLockExclusiveEx(v4, 0i64);
    for( i = *(_QWORD **)(v4 + 32); ; i = (_QWORD *)*i )
    {
      if( i == (_QWORD *)(v4 + 32) )
        goto LABEL_10;
      v13 = (WCHAR *)i[3];
      if( v2 == 42 )
      {
        if( *v13 != 42 )
          continue;
        ++v13;
      }
      if( AslStringPatternMatchW(v3, v13) )
      {
        v6 = 0;
        goto LABEL_10;
      }
    }
  }
LABEL_8:
  RtlInitUnicodeString((PUNICODE_STRING)&DestinationString.Buffer, HardwareId, v1);
  v9 = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)v9 + 242);
  ExAcquirePushLockExclusiveEx(v4, 0i64);
  if( KsepCacheLookup(v4, (INT64)a2) )
    v6 = 0;
LABEL_10:
  if( (_InterlockedExchangeAdd64((volatile signed __int64 *)v4, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
    ExfTryToWakePushLock((volatile INT64 *)v4);
  KeAbPostRelease((PVOID)v4);
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  return v6;
}

Referenced by:

AhcCacheQueryHwId