PopDiagTraceSetThreadExecutionState

VOID __stdcall PopDiagTraceSetThreadExecutionState(_ETHREAD *Thread, UINT64 NewFlags){
  REGHANDLE v3; 
  _OBJECT_NAME_INFORMATION *ImageFileName; 
  __int64 *v5; 
  int v6; 
  char *v7; 
  __int16 v8; 
  int UniqueProcess; 
  int UniqueThread; 
  _EVENT_DATA_DESCRIPTOR UserData; 
  __int16 *v12; 
  __int64 v13; 
  __int64 v14; 
  int v15; 
  int v16; 
  char v17; 
  int v18; 

  v18 = NewFlags;
  if( PopDiagHandleRegistered )
  {
    v3 = PopDiagHandle;
    if( EtwEventEnabled(PopDiagHandle, &POP_ETW_EVENT_STES) )
    {
      UniqueProcess = (int)Thread->Cid.UniqueProcess;
      UniqueThread = (int)Thread->Cid.UniqueThread;
      ImageFileName = Thread->Tcb.Process->SeAuditProcessCreationInfo.ImageFileName;
      v8 = *(_WORD *)ImageFileName >> 1;
      UserData.Ptr = (unsigned __int64)&v18;
      v12 = &v8;
      v5 = &v14;
      *(_QWORD *)&UserData.Size = 4i64;
      v13 = 2i64;
      v6 = *(_WORD *)ImageFileName;
      if( (_WORD)v6 )
      {
        v14 = *((_QWORD *)ImageFileName + 1);
        v5 = (__int64 *)&v17;
        v15 = v6;
        v16 = 0;
      }
      v5[1] = 4i64;
      *v5 = (__int64)&UniqueProcess;
      v7 = (char *)(v5 + 2);
      *((_QWORD *)v7 + 1) = 4i64;
      *(_QWORD *)v7 = &UniqueThread;
      EtwWrite(v3, &POP_ETW_EVENT_STES, 0, (v7 - (char *)&UserData + 16) >> 4, &UserData);
    }
  }
}

Referenced by:

NtSetThreadExecutionState