MiCheckLogPinDriverAddresses

VOID __stdcall MiCheckLogPinDriverAddresses(){
  unsigned int *Buffer; 
  unsigned int v1; 
  unsigned int *v2; 
  bool i; 
  bool v4; 
  bool v5; 
  unsigned int v6; 
  char *v7; 
  unsigned int v8; 
  char *v9; 
  unsigned int v10; 
  char *v11; 
  if( *(_QWORD *)&qword_140C4EC20 )
  {
    if( stru_140C29EA0.SizeOfBitMap )
    {
      if( stru_140C29EA0.SizeOfBitMap > 1 )
      {
        Buffer = stru_140C29EA0.Buffer;
        v1 = *stru_140C29EA0.Buffer;
        v2 = &stru_140C29EA0.Buffer[(unsigned __int64)(stru_140C29EA0.SizeOfBitMap - 1) >> 5];
        if( stru_140C29EA0.Buffer != v2 )
        {
          for( i = v1 == 0; i; i = *Buffer == 0 )
          {
            if( ++Buffer == v2 )
            {
              v4 = ((0xFFFFFFFF >> ~(LOBYTE(stru_140C29EA0.SizeOfBitMap) - 1)) & *Buffer) == 0;
              goto LABEL_10;
            }
          }
          goto LABEL_20;
        }
        v4 = (v1 & (0xFFFFFFFF >> (32 - LOBYTE(stru_140C29EA0.SizeOfBitMap)))) == 0;
LABEL_10:
        v5 = v4;
        goto LABEL_11;
      }
      if( stru_140C29EA0.SizeOfBitMap == 1 )
      {
        v5 = !_bittest((const signed __int32 *)stru_140C29EA0.Buffer, 0);
LABEL_11:
        if( v5 )
        {
          v6 = 0;
          v7 = byte_140C29FB0;
LABEL_13:
          v8 = 0;
          v9 = v7;
LABEL_14:
          v10 = 0;
          v11 = v9;
          while( *(_DWORD *)v11 == *((_DWORD *)v11 + 1) )
          {
            ++v10;
            v11 += 8;
            if( v10 >= 2 )
            {
              ++v8;
              v9 += 16;
              if( v8 < 2 )
                goto LABEL_14;
              ++v6;
              v7 += 32;
              if( v6 < 2 )
                goto LABEL_13;
              return;
            }
          }
        }
      }
    }
LABEL_20:
    if( !_InterlockedCompareExchange16(&word_140C2A010, 1, 0) )
    {
      WorkItem.Parameter = 0i64;
      WorkItem.List.Flink = 0i64;
      WorkItem.WorkerRoutine = (void(__fastcall *)(void *))MiLogPinDriverAddressesWorker;
      ExQueueWorkItem(&WorkItem, DelayedWorkQueue);
    }
  }
}

Referenced by:

MiWorkingSetManager