InsertTailListPte

char __fastcall InsertTailListPte(unsigned __int64 a1, unsigned __int64 *a2){
  _MMPTE *PteBase; 
  unsigned __int64 v5; 
  __int64 v6; 
  unsigned __int64 v7; 
  UINT64 v8; 
  int v9; 
  __int64 v10; 
  __int64 v11; 
  __int64 v12; 
  int v13; 
  __int64 v14; 
  __int64 v15; 
  _ETHREAD *CurrentThread; 
  __int64 v17; 
  unsigned __int64 *v18; 
  _ETHREAD *v19; 
  unsigned __int64 v20; 

  PteBase = MmGetPteBase();
  v5 = (a1 >> 9) & 0x7FFFFFFFF8i64;
  v6 = MiSwizzleInvalidPte((__int64)((__int64)PteBase + v5 - *(_QWORD *)(a1 + 16)) >> 3 << 28);
  v7 = v6;
  LOBYTE(v9) = MiPteInShadowRange(v8);
  if( v9 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (v6 & 1) != 0 )
    v7 = v6 | 0x8000000000000000ui64;
  *a2 = v7;
  LODWORD(v10) = MiGetPteLink(*(_QWORD *)(a1 + 8));
  v11 = v10;
  if( *(&stru_140C4DB30 + 42) )
  {
    if( (v6 & 0x10) != 0 )
      LODWORD(v6) = v6 & 0xFFFFFFEF;
    else
      LODWORD(v6) = ~*(&stru_140C4DB30 + 84) & v6;
  }
  v12 = MiSwizzleInvalidPte(v6 & 0xFFFFFFF | (v10 << 28));
  LOBYTE(v13) = MiPteInShadowRange((UINT64)(a2 + 1));
  if( v13 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (v12 & 1) != 0 )
    v12 |= 0x8000000000000000ui64;
  a2[1] = v12;
  v14 = *(_QWORD *)(a1 + 16);
  v15 = (__int64)((__int64)PteBase + v5 - v14) >> 3;
  CurrentThread = (_ETHREAD *)MiSwizzleInvalidPte(((__int64)a2 - v14) >> 3 << 28);
  if( v11 == v15 )
  {
    *(_QWORD *)a1 = CurrentThread;
    *(_QWORD *)(a1 + 8) = CurrentThread;
  }
  else
  {
    v18 = (unsigned __int64 *)(v17 + 8 * v11);
    v19 = CurrentThread;
    v20 = (unsigned __int64)CurrentThread;
    LOBYTE(CurrentThread) = MiPteInShadowRange((UINT64)v18);
    if( (_DWORD)CurrentThread )
    {
      CurrentThread = (_ETHREAD *)KeGetCurrentThread();
      if( (CurrentThread->Tcb.ApcState.Process->Flags3 & 0x1000) != 0 && ((unsigned __int8)v19 & 1) != 0 )
        v20 |= 0x8000000000000000ui64;
    }
    *v18 = v20;
    *(_QWORD *)(a1 + 8) = v19;
  }
  return(char)CurrentThread;
}

Referenced by:

MiExpandSystemCache
MiReleaseSystemCacheView