MiComputeMaximumFaultCluster

UINT64 __fastcall MiComputeMaximumFaultCluster(UINT64 *a1, UINT64 a2){
  UINT64 v2; 
  UINT64 v4; 
  unsigned __int64 v6; 
  unsigned __int64 v7; 
  __int64 v8; 
  UINT64 v9; 
  UINT64 v10; 
  RTL_BALANCED_NODE *Address; 
  UINT64 v12; 
  v2 = a1[2];
  v4 = *a1 & 0xFFFFFFFFFFFFF000ui64;
  if( v2 == (v2 & 0xFFFFFFFFFFFFFFFEui64) )
  {
    if( ((v2 & 1) == 0 || *(_BYTE *)(v2 & 0xFFFFFFFFFFFFFFFEui64) != 1)
      && (v2 & 1) == 0
      && v2
      && *(_WORD *)(v2 + 368) == 16
      && ((*(_DWORD *)(v2 + 376) & 0x200) != 0
       || !KiRspInIstStack(3ui64, *(_QWORD *)(v2 + 384)) && !KiRspInIstStack(2ui64, v12)) )
    {
      v6 = *(_QWORD *)(v2 + 360);
      if( KiDynamicTraceEnabled && v6 >= *(_QWORD *)ControlPc && v6 < qword_140CFBBE0 )
        KeGetCurrentIrql();
    }
    return 1i64;
  }
  v7 = MiFaultListPagesRemaining(a1);
  if( v7 == 1 )
    return 1i64;
  if( !a2 || a2 > v7 )
    a2 = v7;
  v9 = 512 - (((unsigned __int64)((unsigned int)MmGetPteBase() + (unsigned int)(v4 >> 9)) >> 3) & 0x1FF);
  v10 = v9;
  if( a2 <= v9 )
    v10 = a2;
  if( v4 < 0xFFFF800000000000ui64 )
  {
    Address = *(RTL_BALANCED_NODE **)(v8 + 88);
    if( Address || (Address = MiLocateAddress(v4)) != 0i64 )
      v9 = (HIDWORD(Address[1].Left) | ((unsigned __int64)BYTE1(Address[1].Right) << 32)) - (v4 >> 12) + 1;
    else
      v9 = 1i64;
  }
  if( v10 <= v9 )
    return v10;
  return v9;
}

Referenced by:

MiDispatchFault