PopFxFindAcpiDeviceByUniqueId

NTSTATUS __stdcall PopFxFindAcpiDeviceByUniqueId(_UNICODE_STRING *UniqueId, VOID ***OutputFxDevice){
  _ETHREAD *CurrentThread; 
  char *v5; 
  int v6; 
  char *i; 
  UINT64 RemlockSize; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v5 = 0i64;
  v6 = -1073741275;
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)&stru_140C23628 + 489, 0i64);
  for( i = (char *)*(&stru_140C23628 + 491); i != (char *)&stru_140C23628 + 3928; i = *(char **)i )
  {
    v5 = i - 200;
    if( *((_QWORD *)i + 3) && !RtlCompareUnicodeString((const _UNICODE_STRING *)(v5 + 216), UniqueId, 0) )
    {
      if( OutputFxDevice )
      {
        LODWORD(RemlockSize) = 32;
        v6 = IoAcquireRemoveLockEx((_IO_REMOVE_LOCK *)(v5 + 272), (VOID *)0x66466F50, (CHAR *)&File, 1ui64, RemlockSize);
      }
      else
      {
        v6 = 0;
      }
      break;
    }
  }
  if( _InterlockedCompareExchange64((_QWORD *)&stru_140C23628 + 489, 0i64, 17i64) != 17 )
    ExfReleasePushLockShared((_EX_PUSH_LOCK *)&stru_140C23628 + 489);
  KeAbPostRelease((char *)&stru_140C23628 + 3912);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  if( v6 >= 0 && OutputFxDevice )
    *OutputFxDevice = (VOID **)v5;
  return v6;
}

Referenced by:

PopFxAcpiPrepareDevice
PopFxFindDeviceAndAllocateUniqueId
PopFxRegisterDeviceWorker