InsertTailListPte

CHAR __fastcall InsertTailListPte(UINT64 a1, UINT64 *a2){
  _MMPTE *PteBase; 
  UINT64 v5; 
  INT64 v6; 
  UINT64 PteLink; 
  UINT64 v8; 
  __int64 v9; 
  __int64 v10; 
  _ETHREAD *CurrentThread; 
  __int64 v12; 
  unsigned __int64 *v13; 
  _ETHREAD *v14; 
  unsigned __int64 v15; 
  PteBase = MmGetPteBase();
  v5 = (a1 >> 9) & 0x7FFFFFFFF8i64;
  v6 = MiSwizzleInvalidPte((__int64)((__int64)PteBase + v5 - *(_QWORD *)(a1 + 16)) >> 3 << 28);
  *a2 = v6;
  PteLink = MiGetPteLink(*(_QWORD *)(a1 + 8));
  v8 = PteLink;
  if( qword_140C4DC80 )
  {
    if( (v6 & 0x10) != 0 )
      LODWORD(v6) = v6 & 0xFFFFFFEF;
    else
      LODWORD(v6) = ~(_DWORD)qword_140C4DC80 & v6;
  }
  a2[1] = MiSwizzleInvalidPte(v6 & 0xFFFFFFF | (PteLink << 28));
  v9 = *(_QWORD *)(a1 + 16);
  v10 = (__int64)((__int64)PteBase + v5 - v9) >> 3;
  CurrentThread = (_ETHREAD *)MiSwizzleInvalidPte(((__int64)a2 - v9) >> 3 << 28);
  if( v8 == v10 )
  {
    *(_QWORD *)a1 = CurrentThread;
    *(_QWORD *)(a1 + 8) = CurrentThread;
  }
  else
  {
    v13 = (unsigned __int64 *)(v12 + 8 * v8);
    v14 = CurrentThread;
    v15 = (unsigned __int64)CurrentThread;
    LODWORD(CurrentThread) = MiPteInShadowRange((UINT64)v13);
    if( (_DWORD)CurrentThread )
    {
      CurrentThread = (_ETHREAD *)KeGetCurrentThread();
      if( (*(_DWORD *)(*((_QWORD *)CurrentThread + 23) + 2172i64) & 0x1000) != 0 && ((unsigned __int8)v14 & 1) != 0 )
        v15 |= 0x8000000000000000ui64;
    }
    *v13 = v15;
    *(_QWORD *)(a1 + 8) = v14;
  }
  return(char)CurrentThread;
}

Referenced by:

MiExpandSystemCache
MiReleaseSystemCacheView