MiRemoveEnclavePagesFromDump

_LIST_ENTRY *__fastcall MiRemoveEnclavePagesFromDump(__int64 a1){
  _LIST_ENTRY *result; 
  _LIST_ENTRY *v3; 
  _LIST_ENTRY *v4; 
  _LIST_ENTRY *Flink; 

  result = (_LIST_ENTRY *)*(&stru_140C4DB30 + 530);
  v3 = 0i64;
  while( result )
  {
    v3 = result;
    result = result->Flink;
  }
  while( v3 )
  {
    (*(void(__fastcall **)(__int64, _LIST_ENTRY *, _LIST_ENTRY *, __int64))(a1 + 8))(
      a1,
      v3[1].Blink,
      v3[2].Flink,
      2i64);
    result = v3->Blink;
    v4 = v3;
    if( result )
    {
      Flink = result->Flink;
      v3 = v3->Blink;
      if( result->Flink )
      {
        do
        {
          result = Flink->Flink;
          v3 = Flink;
          Flink = result;
        }
        while( result );
      }
    }
    else
    {
      while( 1 )
      {
        v3 = (_LIST_ENTRY *)((unsigned __int64)v3[1].Flink & 0xFFFFFFFFFFFFFFFCui64);
        if( !v3 || v3->Flink == v4 )
          break;
        v4 = v3;
      }
    }
  }
  return result;
}

Referenced by:

MmGetDumpRange