IommuDevicePowerChange

NTSTATUS __stdcall IommuDevicePowerChange(INT64 a1, INT64 a2, CHAR a3){
  char v3; 
  unsigned __int8 CurrentIrql; 
  volatile __int64 *v5; 

  v3 = 0;
  CurrentIrql = 0;
  if( KeGetCurrentIrql() < 2u )
  {
    v3 = 1;
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(2ui64);
  }
  v5 = (volatile __int64 *)(a2 + 48);
  if( a3 )
  {
    (*(void(__fastcall **)(_QWORD, _QWORD, _QWORD))(*(_QWORD *)(a2 + 24) + 240i64))(
      *(_QWORD *)(*(_QWORD *)(a2 + 24) + 16i64),
      *(_QWORD *)(a2 + 40),
      *(unsigned int *)(a2 + 56));
    _InterlockedExchange64(v5, 0i64);
  }
  else
  {
    ExWaitForRundownProtectionRelease((_EX_RUNDOWN_REF *)(a2 + 48));
    ExRundownCompleted((INT64 *)v5);
  }
  if( v3 )
    __writecr8(CurrentIrql);
  return 0;
}

Referenced by:

No references.