SMKM_STORE::SmStOutSwapPrepareStore

__int64 __fastcall SMKM_STORE::SmStOutSwapPrepareStore(__int64 a1){
  char *PoolWithTag; 
  signed __int64 v3; 
  if( _InterlockedCompareExchange64((volatile signed __int64 *)(a1 + 6568), -1i64, 0i64) )
    return 3221226614i64;
  PoolWithTag = (char *)ExAllocatePoolWithTag(
                          NonPagedPoolNx,
                          4 * (((unsigned __int64)*(unsigned int *)(a1 + 6212) + 31) >> 5) + 24,
                          0x77536D73ui64);
  v3 = (signed __int64)PoolWithTag;
  if( PoolWithTag )
  {
    *(_OWORD *)PoolWithTag = 0i64;
    *((_QWORD *)PoolWithTag + 2) = 0i64;
    *((_DWORD *)PoolWithTag + 2) = *(_DWORD *)(a1 + 6212);
    *((_QWORD *)PoolWithTag + 2) = PoolWithTag + 24;
    RtlSetAllBits((RTL_BITMAP *)(PoolWithTag + 8));
    _InterlockedCompareExchange64((volatile signed __int64 *)(a1 + 6568), v3, -1i64);
    return 0i64;
  }
  else
  {
    _InterlockedExchange64((volatile __int64 *)(a1 + 6568), 0i64);
    return 3221225626i64;
  }
}

Referenced by:

No references.