INT64 __fastcall WbAddHeapExecutedBlockToLRU(INT64 a1, INT64 a2){
_ETHREAD *CurrentThread;
UINT64 *v5;
_BYTE *v6;
_BYTE *v7;
INT64 *v8;
char v9;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 243);
v5 = (UINT64 *)(a1 + 80);
LODWORD(v6) = KeAbPreAcquire((PVOID)(a1 + 80), 0i64, 0i64);
v7 = v6;
if( _interlockedbittestandset64((volatile signed __int32 *)v5, 0i64) )
ExfAcquirePushLockExclusiveEx(v5, v6, v5);
if( v7 )
v7[26] |= 1u;
v8 = *(INT64 **)(a1 + 72);
if( *v8 != a1 + 64 )
__fastfail(3u);
*(_QWORD *)a2 = a1 + 64;
*(_QWORD *)(a2 + 8) = v8;
*v8 = a2;
*(_QWORD *)(a1 + 72) = a2;
*(_DWORD *)(a2 + 16) |= 1u;
v9 = _InterlockedExchangeAdd64((volatile signed __int64 *)v5, 0xFFFFFFFFFFFFFFFFui64);
if( (v9 & 2) != 0 && (v9 & 4) == 0 )
ExfTryToWakePushLock((volatile INT64 *)v5);
KeAbPostRelease(v5);
KiLeaveGuardedRegionUnsafe((__int64)KeGetCurrentThread());
return sub_14065F498(a2);
}