SmPerformStoreSwapOperation

INT64 __fastcall SmPerformStoreSwapOperation(INT64 a1, INT64 a2){
  bool v2; 
  _EPROCESS *v3; 
  if( (_DWORD)a1 == 3 )
  {
    SC_ENV::Free((PVOID)a2);
    return 0i64;
  }
  else
  {
    v2 = (_DWORD)a1 == 2;
    v3 = (_EPROCESS *)*((_QWORD *)KeGetCurrentThread() + 23);
    if( v2 )
      return MmInSwapVirtualAddresses(v3, (PVOID)a2);
    else
      return MmOutSwapVirtualAddresses(v3, *(unsigned __int64 **)(a2 + 8), *(unsigned int *)(a2 + 16), (void ***)a2);
  }
}

Referenced by:

SMKM_STORE::SmStInSwapStore
SMKM_STORE::SmStOutSwapStore