MiCreateForkWsle

VOID __fastcall MiCreateForkWsle(INT64 a1, CHAR a2, UINT64 a3, UINT64 a4, INT64 a5){
  int v5; 
  UINT64 v7; 
  INT64 v10; 
  unsigned __int64 v11; 
  __int64 v12; 
  _QWORD *v13; 
  INT64 v14; 
  __int64 v15; 
  UINT64 v16; 
  if( a3 <= a4 )
  {
    v5 = a5;
    v7 = a3;
    do
    {
      v10 = MI_READ_PTE_LOCK_FREE(v7);
      v16 = v10;
      v11 = v10;
      if( (v10 & 1) != 0 && (v10 & 0x80u) == 0i64 )
      {
        if( v5 > 1 )
        {
          v12 = (__int64)((v7 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
          LODWORD(v14) = v5 - 1;
          MiCreateForkWsle(a1, a2, v12, v12 + 4088, v14);
        }
        MiPteInShadowRange((UINT64)&v16);
        v13 = (_QWORD *)((char *)MmGetPfnDb() + 48 * ((v11 >> 12) & 0xFFFFFFFFFi64));
        if( (*(_BYTE *)v13 & 1) == 0 )
        {
          LODWORD(v15) = 0;
          MiAllocateWsle(a1, v7, v13, 0, ZeroPte, v15, 0i64);
        }
      }
      v7 += 8i64;
    }
    while( v7 <= a4 );
  }
}

Referenced by:

MiCreateForkWsle
MiCreateForkWsles