PopDripsWatchdogCallbackHandler
void __fastcall PopDripsWatchdogCallbackHandler(
__int16 a1,
unsigned int a2,
UINT64 a3,
unsigned __int64 a4,
INT64 a5,
char a6){
int v7;
bool v8;
INT64 v10;
INT64 v11;
INT64 v12;
INT64 v13;
INT64 *i;
unsigned __int64 v15;
unsigned __int64 v16;
INT64 v17;
_LIST_ENTRY v18;
v18 = 0i64;
v7 = a1 & 0x100;
v8 = 0;
if( PopDirectedDripsTimeout && a4 / 0x989680 >= (unsigned int)PopDirectedDripsTimeout || a6 )
v8 = (byte_140C4FD00 & 1) == 0 || (a1 & 1) != 0;
if( ((a1 & 0x80) != 0 || (a1 & 0x100) != 0 || v8)
&& PopDeviceConstraintsEnforced()
&& (int)PopFxBuildDripsBlockingDeviceList(a3, &v18) >= 0 )
{
if( v8 )
{
v13 = 4i64;
}
else
{
if( !v7 )
{
LABEL_17:
for( i = (INT64 *)v18.Flink; i != (INT64 *)&v18; i = (INT64 *)*i )
{
if( v8
|| v7
&& ((PopDripsWatchdogGetDeviceActiveTime((INT64)(i - 109)),
!PopFxIsDirectedPowerTransitionSupported((INT64)(i - 109), 0i64)) ? (v16 = (unsigned int)PopFxDirectedFxDefaultTimeout) : (v16 = *((unsigned int *)i + 10)),
v15 >= v16) )
{
PopDirectedDripsMarkCandidateDevice((INT64)(i - 109));
}
else
{
PopDripsWatchdogInvokeDeviceCallbacks((INT64)(i - 109), a2);
}
}
if( v8 )
{
v17 = 5i64;
}
else
{
if( !v7 )
{
LABEL_33:
PopFxDestroyDripsBlockingDeviceList((INT64)&v18, v10, v11, v12, (INT64)v18.Flink, (INT64)v18.Blink);
return;
}
v17 = 3i64;
}
PopDirectedDripsNotify(v17, &a5, v11, v12);
goto LABEL_33;
}
v13 = 2i64;
}
PopDirectedDripsNotify(v13, &a5, v11, v12);
goto LABEL_17;
}
}Referenced by:
PopDripsWatchdogCallbackWorker