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