MiInitializeWorkingSetList

CHAR __fastcall MiInitializeWorkingSetList(INT64 a1, INT64 a2, INT64 a3, INT64 a4){
  char v5; 
  __int64 v6; 
  _MMPTE *PteBase; 
  UINT64 v8; 
  UINT64 v9; 
  UINT8 v10; 
  unsigned __int64 v11; 
  __int64 v13; 
  v5 = a3 ^ *(_BYTE *)(a1 + 184);
  *(_QWORD *)(a1 + 16) = a2;
  LOBYTE(v6) = *(_BYTE *)(a1 + 184) ^ v5 & 7;
  *(_BYTE *)(a1 + 184) = v6;
  if( (_DWORD)a3 )
  {
    *(_QWORD *)(a1 + 120) = 0i64;
    *(_QWORD *)(a1 + 128) = 0i64;
    *(_QWORD *)(a1 + 136) = 0i64;
    *(_QWORD *)(a1 + 144) = 0i64;
    if( (_DWORD)a3 == 1 )
    {
      *(_BYTE *)(a1 + 184) = v6 | 0x80;
      v6 = *(_QWORD *)(a1 + 112) + 6i64;
      *(_QWORD *)(a1 + 152) = v6;
    }
    else
    {
      *(_QWORD *)(a1 + 152) = a4;
    }
  }
  else
  {
    *(_QWORD *)(a1 - 392) = 1i64;
    PteBase = MmGetPteBase();
    v8 = (UINT64)PteBase + (((unsigned __int64)MmGetPxeSelfRef() >> 9) & 0x7FFFFFFFF8i64);
    v9 = (UINT64)PteBase + ((v8 >> 9) & 0x7FFFFFFFF8i64);
    v10 = MiLockWorkingSetShared(a1);
    MiLockPageTableInternal(a1, v9, 0i64);
    v11 = *(_QWORD *)v8;
    MiPteInShadowRange(v8);
    LODWORD(v13) = 0;
    MiAllocateWsle(a1, v8, (_QWORD *)MmGetPfnDb() + 6 * ((v11 >> 12) & 0xFFFFFFFFFi64), 0, ZeroPte, v13, 0i64);
    MiUnlockPageTableInternal(a1, v9);
    LOBYTE(v6) = MiUnlockWorkingSetShared(a1, v10);
  }
  return v6;
}

Referenced by:

MiInitializeSystemWorkingSetList
MmInitializeProcessAddressSpace