sub_14065DA88
__int64 __fastcall sub_14065DA88(_EX_PUSH_LOCK *a1, __int64 a2){
_ETHREAD *CurrentThread;
_EX_PUSH_LOCK *v5;
_BYTE *v6;
int v7;
__int64 v8;
int v9;
int v11;
INT64 v12;
__int64 v13;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v12 = 0i64;
--CurrentThread->Tcb.SpecialApcDisable;
v5 = a1 + 28;
v6 = KeAbPreAcquire(&a1[28], 0i64, 0i64);
if( _InterlockedCompareExchange64(&v5->_bf_0, 17i64, 0i64) )
ExfAcquirePushLockSharedEx(v5, v6, v5);
if( v6 )
v6[26] |= 1u;
v13 = 0i64;
v7 = sub_14065EB58((__int64)&a1[23], a2, 8u, &v13, &v11);
v8 = v12;
v9 = v7;
if( v7 >= 0 )
v8 = v13;
v12 = v8;
if( _InterlockedCompareExchange64(&v5->_bf_0, 0i64, 17i64) != 17 )
ExfReleasePushLockShared(v5);
KeAbPostRelease(v5);
KiLeaveGuardedRegionUnsafe((__int64)KeGetCurrentThread());
if( v9 >= 0 )
return(unsigned int)WbFreeMemoryBlockRegion(v12, a2);
return(unsigned int)v9;
}Referenced by:
sub_14065EF2C