MiMapArbitraryPage

VOID __fastcall MiMapArbitraryPage(_QWORD *a1, _QWORD *a2, CHAR a3, INT64 a4, INT64 a5){
  __int64 v5; 
  int v6; 
  UINT64 *v7; 
  unsigned int v8; 
  __int64 v11; 
  unsigned __int8 CurrentIrql; 
  int v13; 
  char v14; 
  INT64 v15; 
  UINT64 ValidPte; 
  UINT64 SpinCount; 
  v5 = a2[8];
  v6 = a4;
  v7 = (UINT64 *)a2[9];
  v8 = a3;
  v11 = (v5 - (__int64)MmGetPfnDb()) / 48;
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  LODWORD(SpinCount) = 0;
  while( _interlockedbittestandset64((volatile signed __int32 *)(v5 + 24), 0x3Fui64) )
  {
    do
      KeYieldProcessorEx(&SpinCount);
    while( *(__int64 *)(v5 + 24) < 0 );
  }
  v13 = MiCombineCandidate((_MI_PAGE_COMBINING_SUPPORT *)a1, (_MMPFN *)v8);
  if( !v6 )
  {
    if( v13 )
      goto LABEL_4;
LABEL_17:
    _InterlockedAnd64((volatile signed __int64 *)(v5 + 24), 0x7FFFFFFFFFFFFFFFui64);
    __writecr8(CurrentIrql);
    return;
  }
  if( v13 != v6 )
    goto LABEL_17;
LABEL_4:
  if( (_DWORD)a5 == 1 && (unsigned __int8)((*(_BYTE *)(v5 + 34) & 7) - 2) > 1u )
    goto LABEL_17;
  v14 = *(_BYTE *)(v5 + 34) >> 6;
  if( v14 == 3 )
    goto LABEL_17;
  v15 = 1i64;
  if( v14 )
  {
    if( v14 == 2 )
      v15 = 25i64;
  }
  else
  {
    v15 = 9i64;
  }
  LODWORD(v15) = v15 | 0x20000000;
  ValidPte = MiMakeValidPte((UINT64)v7, v11, v15);
  a2[7] = v7;
  a2[6] = v5;
  *v7 = ValidPte;
  _InterlockedAnd64((volatile signed __int64 *)(v5 + 24), 0x7FFFFFFFFFFFFFFFui64);
  __writecr8(CurrentIrql);
}

Referenced by:

MiCombineAllPhysicalMemory
MiCombinePte
MiSharePages