IommuDevicePowerChange

INT64 __fastcall IommuDevicePowerChange(INT64 a1, INT64 a2, CHAR a3){
  char v3; 
  unsigned __int8 CurrentIrql; 
  EX_RUNDOWN_REF *v5; 
  v3 = 0;
  CurrentIrql = 0;
  if( KeGetCurrentIrql() < 2u )
  {
    v3 = 1;
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(2ui64);
  }
  v5 = (EX_RUNDOWN_REF *)(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((volatile __int64 *)v5, 0i64);
  }
  else
  {
    ExWaitForRundownProtectionRelease((EX_RUNDOWN_REF *)(a2 + 48));
    ExRundownCompleted(v5);
  }
  if( v3 )
    __writecr8(CurrentIrql);
  return 0i64;
}

Referenced by:

No references.