RawVerifyVolume

INT64 __fastcall RawVerifyVolume(INT64 a1, INT64 a2){
  char v4; 
  char v5; 
  KIRQL v6; 
  __int64 v7; 
  int v8; 
  KIRQL v9; 
  v4 = 0;
  v5 = 0;
  v6 = KeAcquireQueuedSpinLock(9ui64);
  v7 = *(_QWORD *)(a1 + 8);
  if( (*(_BYTE *)(v7 + 4) & 1) != 0 )
  {
    ++*(_DWORD *)(v7 + 28);
    v4 = 1;
  }
  KeReleaseQueuedSpinLock(9ui64, v6);
  if( v4 )
  {
    ExAcquireFastMutex((FAST_MUTEX *)(a2 + 224));
    v8 = *(_DWORD *)(a2 + 104);
    if( (v8 & 2) == 0 )
    {
      v5 = 1;
      *(_DWORD *)(a2 + 104) = v8 | 2;
    }
    KeReleaseGuardedMutex((_FAST_MUTEX *)(a2 + 224));
    if( v5 )
      ExWaitForRundownProtectionReleaseCacheAware(*(PEX_RUNDOWN_REF_CACHE_AWARE *)(a2 + 216));
    ExAcquireFastMutex((FAST_MUTEX *)(a2 + 224));
    v9 = KeAcquireQueuedSpinLock(9ui64);
    --*(_DWORD *)(v7 + 28);
    KeReleaseQueuedSpinLock(9ui64, v9);
    *(_DWORD *)(*(_QWORD *)(*(_QWORD *)(a2 + 184) + 16i64) + 48i64) &= ~2u;
    if( !RawInitiateDeleteVolume(a2, 1i64, 0i64) )
      KeReleaseGuardedMutex((_FAST_MUTEX *)(a2 + 224));
  }
  return 3221225490i64;
}

Referenced by:

RawFileSystemControl