MiReacquireWalkLocks

NTSTATUS __stdcall MiReacquireWalkLocks(INT64 a1, _MMPTE *a2, INT64 a3){
  INT64 v3; 
  int v4; 
  _MMPTE *v7; 
  UINT64 v8; 
  NTSTATUS result; 
  INT64 *v10; 

  v3 = *(_QWORD *)(a1 + 24);
  v4 = a3;
  if( !(_DWORD)a3 )
    MiLockWorkingSetShared();
  v7 = MiLockLowestValidPageTable(
         v3,
         (INT64 *)((__int64)(((_QWORD)a2 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16),
         &v10);
  if( v7 == a2 )
  {
    *(_BYTE *)(a1 + 2) &= ~1u;
    result = 1;
    *(_QWORD *)(a1 + 48) = a2;
  }
  else
  {
    MiUnlockPageTableInternal(v3, (UINT64)v7);
    if( !v4 )
    {
      LOBYTE(v8) = *(_BYTE *)(a1 + 6);
      MiUnlockWorkingSetShared(*(_MMSUPPORT_INSTANCE **)(a1 + 24), v8);
    }
    return 0;
  }
  return result;
}

Referenced by:

MiQueryEPTAccessedState