ExpConvertFastResourceExclusiveToShared

INT64 __fastcall ExpConvertFastResourceExclusiveToShared(INT64 a1, INT64 a2, UINT8 *a3){
  void *v3; 
  unsigned __int8 CurrentIrql; 
  __int64 v7; 
  INT64 result; 
  _BYTE LockHandle[56]; 
  __int64 MultiSz; 
  *(_QWORD *)&LockHandle[16] = 0i64;
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  *(_QWORD *)LockHandle = 0i64;
  *(_QWORD *)&LockHandle[8] = a1 + 96;
  KxAcquireQueuedSpinLock((PIO_WORKITEM)LockHandle, (PIO_WORKITEM_ROUTINE)(a1 + 96), (WORK_QUEUE_TYPE)a3, v3);
  *(_WORD *)(a1 + 26) &= ~0x80u;
  v7 = *(_QWORD *)(a1 + 32);
  *(_QWORD *)(a1 + 32) = 0i64;
  MultiSz = v7;
  LODWORD(v7) = *(_DWORD *)(a1 + 72);
  *(_DWORD *)(a1 + 72) = 0;
  *(_DWORD *)(a1 + 64) += v7;
  KeReleaseInStackQueuedSpinLockFromDpcLevel((_KLOCK_QUEUE_HANDLE *)LockHandle);
  KeWakeWaitChain((const WCHAR *)&MultiSz, 0i64, 0);
  *(_BYTE *)(a2 + 17) &= ~4u;
  result = CurrentIrql;
  __writecr8(CurrentIrql);
  return result;
}

Referenced by:

ExConvertFastResourceExclusiveToShared
ExpFastResourceLegacyConvertExclusiveToShared