IopTimerDispatch

VOID __stdcall IopTimerDispatch(KDPC *Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2){
  int v8; 
  UINT64 v9; 
  unsigned __int8 v10; 
  unsigned __int64 v11; 
  int v12; 
  _LIST_ENTRY *i; 
  _LIST_ENTRY *v14; 
  __int64 v15; 
  INT64 v16; 
  int v17; 
  int v18; 
  PVOID v19; 
  INT64 result[13]; 
  LARGE_INTEGER v21[2]; 
  __int128 v22; 
  result[12] = (INT64)&v15;
  v19 = DeferredContext;
  v8 = *(_DWORD *)(&PerfGlobalGroupMask + 1) & 0x800000;
  v18 = *(_DWORD *)(&PerfGlobalGroupMask + 1) & 0x800000;
  memset((INT64)result, 0i64);
  if( (unsigned __int64)(((__int64)DeferredContext >> 47) + 1) > 1 )
  {
    v17 = 0;
    Dpc->Type = 0;
    Dpc->DeferredContext = (void *)((unsigned __int64)SystemArgument2 >> 8);
    *(INT64 *)((char *)&result[10] + 2) = (INT64)SystemArgument1;
    *(INT64 *)((char *)&result[1] + 2) = __ROL8__(DeferredContext, (char)SystemArgument1);
    *(INT64 *)((char *)&result[8] + 2) = __ROR8__(Dpc, (char)SystemArgument1);
    Dpc->SystemArgument1 = (void *)((unsigned __int64)Dpc->SystemArgument1 ^ (unsigned __int64)SystemArgument2);
    Dpc->SystemArgument2 = (void *)((unsigned __int64)Dpc->SystemArgument2 ^ (unsigned __int64)SystemArgument1);
    KiCustomAccessRoutine1((UINT64 *)DeferredContext);
  }
  if( *(_DWORD *)DeferredContext )
  {
    KeAcquireSpinLockRaiseToDpc(&IopTimerLock, v9);
    v11 = v10;
    v12 = *(_DWORD *)DeferredContext;
    for( i = IopTimerQueueHead.Flink; i != &IopTimerQueueHead && v12; i = i->Flink )
    {
      if( WORD1(i[-1].Blink) )
      {
        v14 = i + 1;
        if( v8 )
        {
          *(_OWORD *)&v21[0].LowPart = 0i64;
          v22 = 0i64;
          EtwGetKernelTraceTimestamp(v21, 0x40800000ui64);
          ((void(__fastcall *)(_LIST_ENTRY *, _LIST_ENTRY *))v14->Flink)(i[2].Flink, i[1].Blink);
          LODWORD(v16) = 4196866;
          EtwTraceTimedEvent(3910, 0x40800000ui64, (INT64)&i[1], 8i64, v16, (INT64)v21);
        }
        else
        {
          ((void(__fastcall *)(_LIST_ENTRY *, _LIST_ENTRY *))v14->Flink)(i[2].Flink, i[1].Blink);
        }
        --v12;
      }
    }
    KxReleaseSpinLock(&IopTimerLock);
    __writecr8(v11);
  }
}

Referenced by:

No references.