MiFindDriverNonPagedSections

INT64 __fastcall MiFindDriverNonPagedSections(INT64 a1, UINT64 *a2, _MMPTE **a3, _QWORD *a4){
  __int64 v4; 
  INT64 v5; 
  RTL_BITMAP *v9; 
  unsigned int v10; 
  unsigned int SetBits; 
  unsigned int v12; 
  int NextForwardRunClear; 
  unsigned int SizeOfBitMap; 
  _MMPTE *PteAddress; 
  int v16; 
  UINT64 StartingRunIndex; 
  v4 = *(_QWORD *)(a1 + 48);
  v5 = a1 + 160;
  LODWORD(StartingRunIndex) = 0;
  MiLockLoaderEntry(a1 + 160, 2ui64);
  v9 = *(RTL_BITMAP **)(v5 + 112);
  v10 = *(_DWORD *)a2;
  if( *(_DWORD *)a2 == v9->SizeOfBitMap
    || (SetBits = RtlFindSetBits(*(RTL_BITMAP **)(v5 + 112), 1ui64, v10), v12 = SetBits, SetBits < v10)
    || SetBits == -1 )
  {
    MiUnlockLoaderEntry(v5, 2i64);
    return 3221226021i64;
  }
  else
  {
    NextForwardRunClear = RtlFindNextForwardRunClear(v9, SetBits, &StartingRunIndex);
    SizeOfBitMap = StartingRunIndex;
    if( !NextForwardRunClear )
      SizeOfBitMap = v9->SizeOfBitMap;
    *(_DWORD *)a2 = SizeOfBitMap;
    PteAddress = MiGetPteAddress((PVOID)(v4 + (v12 << 12)));
    *a3 = PteAddress;
    *a4 = (char *)PteAddress + 8 * (unsigned int)(v16 - 1);
    MiUnlockLoaderEntry(v5, 2i64);
    return 0i64;
  }
}

Referenced by:

MiHandleDriverNonPagedSections