SshpWriteBlocker
NTSTATUS __stdcall SshpWriteBlocker(PKSPIN_LOCK SpinLock){
UINT64 v1;
KSPIN_LOCK v2;
unsigned __int64 v3;
unsigned __int8 v5;
unsigned __int64 v6;
__int128 v7;
__int128 v8;
__int128 v9;
__int128 v10;
__int128 v11;
__int128 v12;
__int128 v13;
__int128 v14;
__int128 v15;
__int128 v16;
__int128 v17;
__int128 v18;
__int128 v19;
__int128 v20;
__int128 v21;
int v22;
unsigned __int64 v23;
int v24;
unsigned __int64 v25;
__int64 v26;
UINT64 UserDataCount;
char v29;
int v30;
int v31;
__int64 v32;
__int64 v33;
__int64 v34;
__int64 v35;
__int128 v36[3];
__int128 v37[2];
__int128 v38;
__int128 v39[2];
__int128 v40[3];
__int128 v41[2];
__int128 v42;
__int128 v43[2];
EVENT_DATA_DESCRIPTOR UserData;
KSPIN_LOCK v45;
__int64 v46;
int *v47;
__int64 v48;
__int64 v49;
int v50;
int v51;
KSPIN_LOCK v52;
__int64 v53;
__int128 *v54;
__int64 v55;
__int64 *v56;
__int64 v57;
struct _EVENT_DATA_DESCRIPTOR v58;
__int64 *v59;
__int64 v60;
KSPIN_LOCK v61;
__int64 v62;
KSPIN_LOCK v63;
__int64 v64;
int *v65;
__int64 v66;
__int64 v67;
int v68[2];
int *v69;
__int64 v70;
__int64 *v71;
__int64 v72;
__int64 v73;
__int64 v74;
__int64 v75;
__int64 v76;
__int64 v77;
__int64 v78;
__int128 *v79;
__int64 v80;
__int64 *v81;
__int64 v82;
__int64 v83;
__int64 v84;
__int64 v85;
__int64 v86;
__int64 v87;
__int64 v88;
__int128 *v89;
__int64 v90;
__int64 *v91;
__int64 v92;
v2 = SpinLock[36];
v30 = 0;
v3 = v1;
v29 = 0;
KeAcquireSpinLockRaiseToDpc(SpinLock, v1);
v6 = v5;
if( (SpinLock[1] & 2) != 0 )
SshpStopBlockerAccounting((INT64)SpinLock, *(UINT64 *)&KUSER_SHARED_DATA.InterruptTime.LowPart, 2i64);
v7 = *(_OWORD *)(SpinLock + 5);
v36[0] = *(_OWORD *)(SpinLock + 3);
v8 = *(_OWORD *)(SpinLock + 7);
v36[1] = v7;
v9 = *(_OWORD *)(SpinLock + 9);
v36[2] = v8;
v10 = *(_OWORD *)(SpinLock + 11);
v37[0] = v9;
v11 = *(_OWORD *)(SpinLock + 13);
v37[1] = v10;
v12 = *(_OWORD *)(SpinLock + 15);
v38 = v11;
v13 = *(_OWORD *)(SpinLock + 17);
v39[0] = v12;
v14 = *(_OWORD *)(SpinLock + 19);
v39[1] = v13;
v15 = *(_OWORD *)(SpinLock + 21);
v40[0] = v14;
v16 = *(_OWORD *)(SpinLock + 23);
v40[1] = v15;
v17 = *(_OWORD *)(SpinLock + 25);
v40[2] = v16;
v18 = *(_OWORD *)(SpinLock + 27);
v41[0] = v17;
v19 = *(_OWORD *)(SpinLock + 29);
v41[1] = v18;
v20 = *(_OWORD *)(SpinLock + 31);
v42 = v19;
v21 = *(_OWORD *)(SpinLock + 33);
v43[0] = v20;
v43[1] = v21;
memset((INT64)(SpinLock + 3), 0i64);
memset((INT64)(SpinLock + 19), 0i64);
v22 = SpinLock[1] & 4;
KxReleaseSpinLock(SpinLock);
__writecr8(v6);
v23 = SshpSessionGuid - *(_QWORD *)&GUID_SPM_LOW_POWER_CS.Data1;
if( (_QWORD)SshpSessionGuid == *(_QWORD *)&GUID_SPM_LOW_POWER_CS.Data1 )
v23 = *((_QWORD *)&SshpSessionGuid + 1) - *(_QWORD *)GUID_SPM_LOW_POWER_CS.Data4;
if( !v23 )
{
if( SshpTraceHandleRegistered && v22 )
{
v30 = *(unsigned __int16 *)(v2 + 80) >> 1;
v29 = SshpSessionId;
UserData.Ptr = (unsigned __int64)&v29;
v45 = v2 + 48;
v47 = &v30;
*(_QWORD *)&UserData.Size = 1i64;
v46 = 16i64;
v48 = 4i64;
v24 = *(unsigned __int16 *)(v2 + 80);
v49 = *(_QWORD *)(v2 + 88);
v52 = v2 + 64;
v54 = v36;
v56 = &SshpSessionId;
LODWORD(UserDataCount) = 7;
v50 = v24;
v51 = 0;
v53 = 16i64;
v55 = 8i64;
v57 = 8i64;
LODWORD(v23) = EtwWriteEx(
SshpTraceHandle,
(EVENT_DESCRIPTOR *)&SLEEPSTUDY_EVT_SCENARIO_BLOCKER,
0i64,
0i64,
0i64,
0i64,
UserDataCount,
&UserData);
}
if( v3 )
{
v23 = 100i64 * *(_QWORD *)&v36[0] / v3;
v25 = v23;
}
else
{
v25 = 0i64;
}
if( v3 >= SshpSessionThresholdHns )
{
LODWORD(v23) = SshpActiveThresholdPercent;
if( v25 >= (unsigned int)SshpActiveThresholdPercent )
{
if( SshpTelemetryHandleRegistered )
{
if( (unsigned int)dword_140C046E0 > 5 )
{
LOBYTE(v23) = tlgKeywordOn((__int64)&dword_140C046E0, 0x400000000000i64);
if( (_BYTE)v23 )
{
v32 = SshpSessionId;
v33 = v26;
v59 = &v32;
v60 = 8i64;
v61 = v2 + 48;
v62 = 16i64;
v63 = v2 + 64;
v65 = v68;
v67 = *(_QWORD *)(v2 + 88);
v68[0] = *(unsigned __int16 *)(v2 + 80);
v31 = *(_DWORD *)(v2 + 40);
v69 = &v31;
v71 = &v33;
v73 = (__int64)&v38 + 8;
v75 = (__int64)v36 + 8;
v77 = (__int64)v39 + 12;
v79 = v37;
v34 = *(_QWORD *)&v40[0];
v81 = &v34;
v83 = (__int64)&v42 + 8;
v85 = (__int64)v40 + 8;
v87 = (__int64)v43 + 12;
v89 = v41;
v91 = &v35;
v64 = 16i64;
v66 = 2i64;
v68[1] = 0;
v70 = 4i64;
v72 = 8i64;
v74 = 20i64;
v76 = 40i64;
v78 = 20i64;
v80 = 40i64;
v82 = 8i64;
v84 = 20i64;
v86 = 40i64;
v88 = 20i64;
v90 = 40i64;
v35 = 0x1000000i64;
v92 = 8i64;
LODWORD(v23) = tlgWriteTransfer_EtwWriteTransfer(
(__int64)&dword_140C046E0,
(unsigned __int8 *)word_1400299DA,
0i64,
0i64,
0x13u,
&v58);
}
}
}
}
}
}
return v23;
}Referenced by:
SshpSendSessionData