PoTraceSystemTimerResolution

char __fastcall PoTraceSystemTimerResolution(char a1, __int64 a2, EVENT_DESCRIPTOR *a3){
  __int64 v5; 
  bool v6; 
  UINT64 v7; 
  EVENT_DESCRIPTOR *v8; 
  unsigned __int16 *v9; 
  _ETHREAD *CurrentThread; 
  __int64 v11; 
  __int64 v12; 
  __int16 v13; 
  int v14; 
  int v15; 
  UINT64 v16; 
  EVENT_DESCRIPTOR *v17; 
  int *v18; 
  __int16 v20; 
  int v21; 
  int v22; 
  int v23; 
  int v24; 
  EVENT_DATA_DESCRIPTOR UserData; 
  int *v26; 
  int v27; 
  int v28; 
  __int16 *v29; 
  int v30; 
  int v31; 
  __int64 v32; 
  int v33; 
  int v34; 
  int *v35; 
  int v36; 
  int v37; 
  _DWORD *v38; 
  int v39; 
  int v40; 
  if( a1 )
  {
    v7 = PopDiagHandle;
    LOBYTE(v5) = EtwEventEnabled(PopDiagHandle, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_TIME_RESOLUTION_REQUEST_RUNDOWN, a3);
    v6 = 1;
    if( !(_BYTE)v5 )
    {
      LOBYTE(v5) = EtwEventEnabled(v7, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_TIME_RESOLUTION_STACK_RUNDOWN, v8);
      if( !(_BYTE)v5 )
        v6 = 0;
    }
  }
  else
  {
    LOBYTE(v5) = EtwEventEnabled(PopDiagHandle, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_STRS, a3);
    v6 = v5;
  }
  if( PopDiagHandleRegistered && v6 )
  {
    v9 = *(unsigned __int16 **)(a2 + 1472);
    v20 = *v9 >> 1;
    v22 = *(_DWORD *)(a2 + 2104);
    v21 = 0;
    if( !a1 )
    {
      CurrentThread = (_ETHREAD *)KeGetCurrentThread();
      if( (*((_DWORD *)CurrentThread + 29) & 0x400) != 0 || *((_BYTE *)CurrentThread + 586) == 1 )
        v11 = 0i64;
      else
        v11 = *((_QWORD *)CurrentThread + 30);
      if( v11 )
      {
        if( *(_QWORD *)(*((_QWORD *)KeGetCurrentThread() + 23) + 1408i64)
          && (v12 = *(_QWORD *)(*((_QWORD *)KeGetCurrentThread() + 23) + 1408i64)) != 0
          && ((v13 = *(_WORD *)(v12 + 8), v13 == 332) || v13 == 452) )
        {
          v14 = *(_DWORD *)(v11 + 12128);
        }
        else
        {
          v14 = *(_DWORD *)(v11 + 5920);
        }
        v21 = v14;
      }
    }
    v23 = *(_DWORD *)(a2 + 1088);
    UserData.Ptr = (unsigned __int64)&v22;
    UserData.Size = 4;
    UserData.Reserved = 0;
    v26 = &v23;
    v27 = 4;
    v28 = 0;
    v29 = &v20;
    v30 = 2;
    v31 = 0;
    v15 = *v9;
    v5 = *((_QWORD *)v9 + 1);
    v32 = v5;
    v33 = v15;
    v34 = 0;
    if( a1 )
    {
      if( (*(_DWORD *)(a2 + 1124) & 0x1000) != 0 )
        LOBYTE(v5) = EtwWrite(
                       PopDiagHandle,
                       (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_TIME_RESOLUTION_REQUEST_RUNDOWN,
                       0i64,
                       4ui64,
                       &UserData);
      v18 = *(int **)(a2 + 2096);
      if( !v18 || !*v18 )
        return v5;
      v22 = *(_DWORD *)(a2 + 2108);
      v24 = *v18;
      v35 = &v24;
      v38 = v18 + 2;
      v39 = 8 * v24;
      v40 = 0;
      v16 = 6i64;
      v17 = (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_TIME_RESOLUTION_STACK_RUNDOWN;
    }
    else
    {
      v35 = &v21;
      v16 = 5i64;
      v17 = (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_STRS;
    }
    v36 = 4;
    v37 = 0;
    LOBYTE(v5) = EtwWrite(PopDiagHandle, v17, 0i64, v16, &UserData);
  }
  return v5;
}

Referenced by:

ExTraceTimerResolution
NtSetTimerResolution