PopIdleWakeTraceWakeSourceDiagnostic
void __fastcall PopIdleWakeTraceWakeSourceDiagnostic(__int64 a1, __int64 a2, WCHAR a3){
unsigned __int16 *v5;
unsigned int v6;
__int128 *v7;
__int64 v8;
__int64 v9;
__int64 v10;
int v11;
int v12;
__int64 v13;
__int64 v14;
int v15;
int v16;
unsigned int v17;
unsigned int v18;
unsigned int v19;
__int64 v20;
__int64 v21;
__int64 v22;
__int64 v23;
__int64 v24;
REGHANDLE v25;
int v26;
int v27;
int v28;
int v29;
__int64 v30;
__int64 v31;
__int64 v32;
__int64 v33;
__int64 v34;
__int64 v35;
__int64 v36;
__int64 v37;
__int64 v38;
_UNICODE_STRING DestinationString;
__int128 v40;
unsigned __int16 *v41;
_EVENT_DATA_DESCRIPTOR v42;
__int64 *v43;
__int64 v44;
int *v45;
__int64 v46;
int *v47;
__int64 v48;
__int64 v49;
int v50[2];
int *v51;
__int64 v52;
__int64 v53;
int v54[2];
int *v55;
__int64 v56;
__int64 v57;
int v58[2];
int *v59;
__int64 v60;
__int64 *v61;
__int64 v62;
__int64 *v63;
__int64 v64;
__int64 *v65;
__int64 v66;
__int64 v67;
__int64 v68;
__int64 v69;
int v70;
int v71;
INT64 *v72;
__int64 v73;
__int64 v74;
__int64 v75;
INT64 *v76;
__int64 v77;
__int64 v78;
__int64 v79;
int *v80;
__int64 v81;
__int64 *v82;
__int64 v83;
__int64 v84;
__int64 v85;
__int64 v86;
__int64 v87;
__int64 *v88;
__int64 v89;
__int64 v90;
__int64 v91;
__int64 v92;
__int64 v93;
__int64 *v94;
__int64 v95;
__int64 v96;
__int64 v97;
__int64 v98;
__int64 v99;
__int64 *v100;
__int64 v101;
__int64 v102;
__int64 v103;
__int64 v104;
__int64 v105;
_EVENT_DATA_DESCRIPTOR UserData;
__int64 v107;
__int64 v108;
__int64 v109;
__int64 v110;
__int64 v111;
__int64 v112;
__int64 v113;
__int64 v114;
__int64 *v115;
__int64 v116;
__int64 v117;
unsigned int v118;
int v119;
__int64 v120;
__int64 v121;
v5 = 0i64;
DestinationString = 0i64;
v41 = 0i64;
v40 = 0i64;
RtlInitUnicodeString(&DestinationString, (PCWSTR)&dword_1407CF120);
if( *(_DWORD *)a2 == 5 )
{
v6 = *(_DWORD *)(a2 + 408);
if( v6 > 3 )
v6 = 3;
if( v6 )
{
v7 = &v40;
v8 = v6;
v9 = 0i64;
do
{
v10 = v9 + a2 + 416;
v9 += 16i64;
*(_QWORD *)v7 = v10;
v7 = (__int128 *)((char *)v7 + 8);
--v8;
}
while( v8 );
v5 = v41;
}
}
else
{
v6 = 1;
*(_QWORD *)&v40 = a2 + 392;
}
if( v6 < 3 )
{
memset64((char *)&v40 + 8 * v6, (unsigned __int64)&DestinationString, 3 - v6);
v5 = v41;
}
if( *(&stru_140C00F40 + 1194) > 5u && tlgKeywordOn((__int64)&stru_140C00F40 + 4776, 0x400000000000i64) )
{
v31 = a1;
v43 = &v31;
v45 = &v27;
v44 = 8i64;
v27 = v11;
v46 = 4i64;
v12 = *(unsigned __int16 *)v40;
v13 = *(_QWORD *)(v40 + 8);
v47 = v50;
v49 = v13;
v50[0] = v12;
v48 = 2i64;
v50[1] = 0;
v14 = *(_QWORD *)(*((_QWORD *)&v40 + 1) + 8i64);
v15 = (unsigned __int16)**((_WORD **)&v40 + 1);
v51 = v54;
v53 = v14;
v54[0] = v15;
v52 = 2i64;
v54[1] = 0;
LODWORD(v14) = *v5;
v57 = *((_QWORD *)v5 + 1);
v28 = *(_DWORD *)(a2 + 8);
v59 = &v28;
v32 = *(_QWORD *)(a2 + 16);
v61 = &v32;
v33 = *(_QWORD *)(a2 + 24);
v63 = &v33;
v34 = *(_QWORD *)(a2 + 32);
v65 = &v34;
v69 = a2 + 466;
v58[0] = v14;
v16 = *(unsigned __int16 *)(a2 + 464);
v67 = a2 + 464;
v55 = v58;
v56 = 2i64;
v58[1] = 0;
v60 = 4i64;
v72 = &PopIdleWakeIdleAccountingBucketLimitsMs;
v62 = 8i64;
v74 = a2 + 40;
v76 = &PopIdleWakePeriodAccountingBucketLimitsMs;
v78 = a2 + 76;
v29 = *(_DWORD *)(a2 + 4);
v80 = &v29;
v64 = 8i64;
v66 = 8i64;
v68 = 2i64;
v70 = 10 * v16;
v71 = 0;
v73 = 80i64;
v75 = 36i64;
v77 = 96i64;
v79 = 44i64;
v81 = 4i64;
v35 = *(_QWORD *)(a2 + 120);
v83 = 8i64;
v82 = &v35;
v85 = 20i64;
v84 = a2 + 128;
v87 = 40i64;
v86 = a2 + 152;
v36 = *(_QWORD *)(a2 + 192);
v88 = &v36;
v90 = a2 + 200;
v92 = a2 + 224;
v37 = *(_QWORD *)(a2 + 264);
v94 = &v37;
v96 = a2 + 272;
v98 = a2 + 296;
v38 = *(_QWORD *)(a2 + 336);
v100 = &v38;
v102 = a2 + 344;
v104 = a2 + 360;
v89 = 8i64;
v91 = 20i64;
v93 = 40i64;
v95 = 8i64;
v97 = 20i64;
v99 = 40i64;
v101 = 8i64;
v103 = 12i64;
v105 = 24i64;
tlgWriteTransfer_EtwWriteTransfer(
(__int64)&stru_140C00F40 + 4776,
(unsigned __int8 *)&byte_140028A5F,
0i64,
0i64,
0x21u,
&v42);
}
if( PopDiagHandleRegistered && EtwEventEnabled(PopDiagHandle, &POP_ETW_EVENT_DRIPS_WAKE_ACCOUNTING_SUMMARY) )
{
v17 = *(unsigned __int16 *)(a2 + 392);
v18 = 8;
LOBYTE(v26) = PopWnfCsEnterScenarioId;
UserData.Ptr = (unsigned __int64)&v26;
v107 = a2 + 8;
v109 = a2 + 16;
v111 = a2 + 24;
v113 = a2 + 32;
LODWORD(v30) = v17 >> 1;
v115 = &v30;
v117 = *(_QWORD *)(a2 + 400);
v118 = v17;
v19 = *(unsigned __int16 *)(a2 + 464);
*(_QWORD *)&UserData.Size = 1i64;
v108 = 4i64;
v110 = 8i64;
v112 = 8i64;
v114 = 8i64;
v116 = 4i64;
v119 = 0;
v120 = a2 + 464;
v121 = 2i64;
if( (_WORD)v19 )
{
v20 = a2 + 468;
v21 = v19;
do
{
v22 = 2i64 * v18;
*(&UserData.Ptr + v22) = v20 - 2;
*((_QWORD *)&UserData.Size + v22) = 2i64;
v23 = 2i64 * (v18 + 1);
v18 += 2;
*(&UserData.Ptr + v23) = v20;
v20 += 10i64;
*((_QWORD *)&UserData.Size + v23) = 8i64;
--v21;
}
while( v21 );
}
v24 = 2i64 * v18;
*(&UserData.Ptr + v24) = (unsigned __int64)&PopWnfCsEnterScenarioId;
v25 = PopDiagHandle;
*((_QWORD *)&UserData.Size + v24) = 8i64;
EtwWrite(v25, &POP_ETW_EVENT_DRIPS_WAKE_ACCOUNTING_SUMMARY, 0, v18 + 1, &UserData);
}
}Referenced by:
PopIdleWakeNotifyModernStandbyExit