RawCompletionRoutine

NTSTATUS __stdcall RawCompletionRoutine(DEVICE_OBJECT *DeviceObject, IRP *Irp, PVOID Context){
  __int64 v3; 
  __int64 v5; 
  v3 = *((_QWORD *)Irp + 23);
  if( (unsigned __int8)(*(_BYTE *)v3 - 3) <= 1u )
  {
    v5 = *(_QWORD *)(v3 + 48);
    if( v5 )
    {
      if( (*(_DWORD *)(v5 + 80) & 2) != 0 && *((int *)Irp + 12) >= 0 )
        *(_QWORD *)(v5 + 104) += *((_QWORD *)Irp + 7);
    }
  }
  if( *((_BYTE *)Irp + 65) )
    *(_BYTE *)(*((_QWORD *)Irp + 23) + 3i64) |= 1u;
  RawEndOperation((INT64)Context, *(_QWORD *)(v3 + 48));
  if( *(_BYTE *)v3 == 27 )
  {
    ExAcquireFastMutex((FAST_MUTEX *)Context + 4);
    --*((_DWORD *)Context + 28);
    if( *((_DWORD *)Context + 27) || !RawInitiateDeleteVolume((INT64)Context, 0i64, 0i64) )
      KeReleaseGuardedMutex((_FAST_MUTEX *)Context + 4);
  }
  return 0;
}

Referenced by:

No references.