PopSetSpecialRequest

_KNOWN_CONTROLLER_TYPE __stdcall PopSetSpecialRequest(_KNOWN_CONTROLLER_TYPE a1, _KNOWN_CONTROLLER_TYPE a2){
  VOID *v2; 
  char v3; 
  UINT64 v4; 
  _KNOWN_CONTROLLER_TYPE v5; 
  _EPROCESS *v6; 
  VOID *v7; 
  UINT64 Tag; 
  _EPROCESS *Process; 

  Process = 0i64;
  v3 = 0;
  v4 = *(_QWORD *)&a1;
  if( a2 != InterruptControllerGic )
    return -1073741811;
  LODWORD(Tag) = 1917874000;
  v5 = ObpReferenceObjectByHandleWithTag(
         v2,
         0x2000ui64,
         (_OBJECT_TYPE *)PsProcessType,
         1,
         Tag,
         (VOID **)&Process,
         0i64,
         0i64);
  if( v5 >= InterruptControllerInvalid )
  {
    v6 = Process;
    v7 = PsChargeProcessWakeCounter(Process, 0i64, PsWakeReasonInstrumentation, v4);
    PopAcquirePowerRequestPushLock(1u);
    if( *(_QWORD *)(v4 + 120) )
    {
      v3 = 1;
      v5 = -1073741811;
    }
    else
    {
      *(_QWORD *)(v4 + 120) = v6;
      *(_QWORD *)(v4 + 128) = v7;
      ++*(_DWORD *)(v4 + 44);
      PopDiagTracePowerRequestChange((_PO_POWER_REQUEST *)v4);
      v5 = InterruptControllerInvalid;
    }
    PopReleaseRwLock((_POP_RW_LOCK *)((char *)&stru_140C23628 + 5864));
    if( v3 )
      PsReleaseProcessWakeCounter(v7, v4);
    ObfDereferenceObjectWithTag(v6, 0x72506F50ui64);
  }
  return v5;
}

Referenced by:

PopPowerRequestActionInfo