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