MiFindLargeMapping

UINT64 __stdcall MiFindLargeMapping(PVOID VirtualAddress, PVOID EndVirtualAddress){
  _MMPTE *PdeBase; 
  unsigned __int64 v3; 
  _MMPTE *v4; 
  _MMPTE *PteBase; 
  unsigned int v6; 
  char *v7; 
  __int64 v8; 
  unsigned __int64 v9; 
  _QWORD *v10; 
  char *i; 
  _OWORD v13[2]; 
  char v14; 
  PdeBase = MmGetPdeBase();
  v3 = (unsigned __int64)PdeBase + (((unsigned __int64)VirtualAddress >> 18) & 0x3FFFFFF8);
  v4 = PdeBase;
  PteBase = MmGetPteBase();
  v6 = 3;
  v7 = &v14;
  v8 = 3i64;
  v9 = (unsigned __int64)v4 + (((unsigned __int64)EndVirtualAddress >> 18) & 0x3FFFFFF8);
  do
  {
    v7 -= 16;
    --v8;
    *((_QWORD *)v7 - 1) = v3;
    *(_QWORD *)v7 = v9;
    v3 = (unsigned __int64)PteBase + ((v3 >> 9) & 0x7FFFFFFFF8i64);
    v9 = (unsigned __int64)PteBase + ((v9 >> 9) & 0x7FFFFFFFF8i64);
    --v6;
  }
  while( v6 );
  v10 = &v13[v8];
  while( 2 )
  {
    for( i = (char *)*(v10 - 1); (unsigned __int64)i <= *v10; i += 8 )
    {
      if( *i < 0 )
        return 1i64;
    }
    ++v6;
    v10 += 2;
    if( v6 < 3 )
      continue;
    break;
  }
  return 0i64;
}

Referenced by:

MmProtectPool