sub_14065DA88
__int64 __fastcall sub_14065DA88(__int64 a1, __int64 a2){
_ETHREAD *CurrentThread;
UINT64 *v5;
_BYTE *v6;
_BYTE *v7;
int v8;
INT64 v9;
int v10;
INT64 a5;
INT64 v13;
INT64 a4;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v13 = 0i64;
--*((_WORD *)CurrentThread + 243);
v5 = (UINT64 *)(a1 + 224);
LODWORD(v6) = KeAbPreAcquire((PVOID)(a1 + 224), 0i64, 0i64);
v7 = v6;
if( _InterlockedCompareExchange64((volatile signed __int64 *)v5, 17i64, 0i64) )
ExfAcquirePushLockSharedEx(v5, v6, v5);
if( v7 )
v7[26] |= 1u;
a4 = 0i64;
v8 = sub_14065EB58(a1 + 184, a2, 8ui64, &a4, &a5);
v9 = v13;
v10 = v8;
if( v8 >= 0 )
v9 = a4;
v13 = v9;
if( _InterlockedCompareExchange64((volatile signed __int64 *)v5, 0i64, 17i64) != 17 )
ExfReleasePushLockShared((INT64 *)v5);
KeAbPostRelease(v5);
KiLeaveGuardedRegionUnsafe((__int64)KeGetCurrentThread());
if( v10 >= 0 )
return(unsigned int)WbFreeMemoryBlockRegion(v13, a2);
return(unsigned int)v10;
}Referenced by:
sub_14065EF2C