WbAddHeapExecutedBlockToCache

__int64 __fastcall WbAddHeapExecutedBlockToCache(__int64 a1, INT64 a2, _QWORD *a3){
  _ETHREAD *CurrentThread; 
  _EX_PUSH_LOCK *v7; 
  _BYTE *v8; 
  _BYTE *v9; 
  int v10; 
  INT64 v11; 
  int v12; 
  char v13; 
  UINT64 v15; 
  UINT64 v16; 
  __int64 v17; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  LODWORD(v16) = 0;
  v17 = 0i64;
  --CurrentThread->Tcb.SpecialApcDisable;
  v7 = (_EX_PUSH_LOCK *)(a1 + 48);
  v8 = KeAbPreAcquire((VOID *)(a1 + 48), 0i64, 0i64);
  v9 = v8;
  if( _interlockedbittestandset64((volatile signed __int32 *)v7, 0i64) )
    ExfAcquirePushLockExclusiveEx(v7, v8, v7);
  if( v9 )
    v9[26] |= 1u;
  v10 = sub_14065E484(a1, *(_QWORD *)(a2 + 48), &v17, (int *)&v16);
  v12 = v10;
  if( v10 >= 0 )
  {
    if( a3 )
      *a3 = v17;
  }
  else if( v10 == -1073741198 )
  {
    LODWORD(v15) = v16;
    v12 = sub_14065FDF0((INT64 *)(a1 + 8), a2, v11, *(_QWORD *)(a2 + 48), 8, v15);
    if( v12 >= 0 )
    {
      v12 = sub_14065F498(a2);
      if( v12 >= 0 )
      {
        if( a3 )
          *a3 = 0i64;
        v12 = WbAddHeapExecutedBlockToLRU(a1, a2);
      }
    }
  }
  v13 = _InterlockedExchangeAdd64(&v7->_bf_0, 0xFFFFFFFFFFFFFFFFui64);
  if( (v13 & 2) != 0 && (v13 & 4) == 0 )
    ExfTryToWakePushLock(v7);
  KeAbPostRelease(v7);
  KiLeaveGuardedRegionUnsafe((__int64)KeGetCurrentThread());
  return(unsigned int)v12;
}

Referenced by:

WbGetHeapExecutedBlock