MiIsProbeActive

VOID __stdcall MiIsProbeActive(_MMPTE *InputPte, UINT64 InputPages, INT64 Flags, CHAR a4){
  int v5; 
  char v6; 
  KIRQL v8; 
  _QWORD *v9; 
  unsigned __int64 v10; 
  char *v11; 
  unsigned __int64 v12; 
  unsigned __int64 v13; 
  __int64 v14; 
  char *v15; 
  _WORD *v16; 
  unsigned __int64 v17; 
  _QWORD *v18; 
  _QWORD *v19; 
  unsigned __int64 v20; 
  unsigned __int64 v21; 
  unsigned __int64 v22; 
  _QWORD *v23; 
  _QWORD *j; 
  unsigned __int64 v25; 
  char v26; 
  _QWORD *v27; 
  __int64 v28; 
  _MMPTE *i; 
  v26 = Flags;
  v5 = 0;
  v6 = Flags;
  v8 = ExAcquireSpinLockShared(&dword_140C4E980);
  v9 = (_QWORD *)xmmword_140C4E988;
  v10 = v8;
  if( (_QWORD)xmmword_140C4E988 )
  {
    if( (v6 & 1) != 0 )
    {
      v27 = 0i64;
      v28 = -1i64;
      for( i = (_MMPTE *)((char *)InputPte + 8 * InputPages); InputPte < i; InputPte = (_MMPTE *)((char *)InputPte + 8) )
      {
        v20 = *(_QWORD *)InputPte;
        MiPteInShadowRange((UINT64)InputPte);
        v21 = (v20 >> 12) & 0xFFFFFFFFFi64;
        if( (*((_QWORD *)MmGetPfnDb() + 6 * v21 + 5) & 0x4000000000000i64) != 0 )
        {
          if( (v26 & 2) != 0 && *((_WORD *)MmGetPfnDb() + 24 * v21 + 16) > 2u )
            break;
        }
        else
        {
          v22 = v21 & 0xFFFFFFFFFFFFFE00ui64;
          if( v28 == -1 || v28 != v22 )
          {
            v23 = v27;
            if( !v27 || v27[5] != v22 )
            {
              for( j = (_QWORD *)xmmword_140C4E988; ; j = (_QWORD *)j[1] )
              {
                while( 1 )
                {
                  if( !j )
                  {
                    v28 = v21 & 0xFFFFFFE00i64;
                    goto LABEL_48;
                  }
                  v25 = j[5];
                  if( v21 >= v25 )
                    break;
                  j = (_QWORD *)*j;
                }
                if( v21 < v25 + 512 )
                  break;
              }
              v23 = j;
              v27 = j;
            }
            if( (*(_WORD *)(v23[6] + 2 * (v21 - v23[5])) & 0x3FFF) != 0 )
              break;
          }
        }
LABEL_48:
        ;
      }
    }
    else
    {
      v11 = (char *)InputPte + InputPages - 1;
      while( v9 )
      {
        v12 = v9[5];
        if( (unsigned __int64)v11 < v12 )
        {
          v9 = (_QWORD *)*v9;
        }
        else
        {
          if( (unsigned __int64)InputPte <= v12 + 512 )
            break;
          v9 = (_QWORD *)v9[1];
        }
      }
      while( v9 )
      {
        v13 = v9[5];
        if( (unsigned __int64)v11 < v13 )
          break;
        v14 = v9[6];
        v15 = (char *)InputPte - v13;
        if( (unsigned __int64)InputPte < v13 )
          v15 = 0i64;
        v16 = (_WORD *)(v14 + 2i64 * (_QWORD)v15);
        if( (unsigned __int64)(v11 + 1) > v13 + 512 )
          v17 = v14 + 1024;
        else
          v17 = v14 + 2i64 * (_QWORD)&v11[-v13 + 1];
        if( (unsigned __int64)v16 < v17 )
        {
          while( (*v16 & 0x3FFF) == 0 )
          {
            if( (unsigned __int64)++v16 >= v17 )
              goto LABEL_22;
          }
          v5 = 1;
LABEL_22:
          v11 = (char *)InputPte + InputPages - 1;
        }
        if( v5 == 1 )
          break;
        v18 = (_QWORD *)v9[1];
        v19 = v9;
        if( v18 )
        {
          do
          {
            v9 = v18;
            v18 = (_QWORD *)*v18;
          }
          while( v18 );
        }
        else
        {
          while( 1 )
          {
            v9 = (_QWORD *)(v9[2] & 0xFFFFFFFFFFFFFFFCui64);
            if( !v9 || (_QWORD *)*v9 == v19 )
              break;
            v19 = v9;
          }
        }
      }
    }
  }
  ExReleaseSpinLockSharedFromDpcLevel(&dword_140C4E980);
  __writecr8(v10);
}

Referenced by:

MiReplaceRotateWithDemandZero
MiSwitchToTransition
MmIsIoSpaceActive