CmpInitializeTransactions

VOID __stdcall CmpInitializeTransactions(){
  unsigned __int64 v0; 
  __int64 v1; 
  __int64 v2; 
  _QWORD *v3; 
  char *v4; 
  __int64 v5; 
  int v6; 
  __int64 v7; 
  _WORD v8[12]; 

  CmpRmListLock.gap14[6] = 6;
  CmpRmListLock.Owner = 0i64;
  CmpRmListLock.Count = 1;
  qword_140C47878 = (__int64)&CmpRmListHead;
  CmpRmListHead = (INT64)&CmpRmListHead;
  *(_QWORD *)&CmpRmListLock.gap14[20] = &CmpRmListLock.gap14[12];
  *(_QWORD *)&CmpRmListLock.gap14[12] = &CmpRmListLock.gap14[12];
  *(&CmpDummyThreadEvent + 13) = (char *)&CmpDummyThreadEvent + 96;
  *(&CmpDummyThreadEvent + 12) = (char *)&CmpDummyThreadEvent + 96;
  *(&CmpDummyThreadEvent + 22) = CmpLazyCommitWorker;
  *(&CmpDummyThreadEvent + 33) = (char *)&CmpDummyThreadEvent + 256;
  *(&CmpDummyThreadEvent + 32) = (char *)&CmpDummyThreadEvent + 256;
  CmpRmListLock.Contention = 0;
  *(_WORD *)&CmpRmListLock.gap14[4] = 1;
  *(_DWORD *)&CmpRmListLock.gap14[8] = 0;
  *(&CmpDummyThreadEvent + 16) = 1;
  *(&CmpDummyThreadEvent + 9) = 0i64;
  *(&CmpDummyThreadEvent + 20) = 0;
  *(&CmpDummyThreadEvent + 44) = 1;
  *(&CmpDummyThreadEvent + 90) = 6;
  *(&CmpDummyThreadEvent + 23) = 0;
  *(&CmpDummyThreadEvent + 15) = 0i64;
  *(&CmpDummyThreadEvent + 23) = 0i64;
  *(&CmpDummyThreadEvent + 20) = 0i64;
  _mm_lfence();
  if( (void *)qword_140C4C520 == CmpRmListLock.Owner )
  {
    v0 = __rdtsc();
    v1 = (41929663 * (unsigned int)((((unsigned __int64)HIDWORD(v0) << 32) | (unsigned int)v0) >> 4)) ^ 0x1005i64;
    if( !v1 )
      v1 = 1i64;
    qword_140C4C520 = v1;
    v2 = (41929663 * (unsigned int)(__rdtsc() >> 4)) ^ 0x557i64;
    qword_140C4C528 = v2;
    __sidt(v8);
    v3 = *(_QWORD **)&v8[1];
    if( *(_QWORD *)&v8[1] < (unsigned __int64)(*(_QWORD *)&v8[1] + 848i64) )
    {
      v4 = *(char **)&v8[1];
      do
      {
        _mm_prefetchnta(v4);
        v4 += 64;
      }
      while( (unsigned __int64)v4 < *(_QWORD *)&v8[1] + 848i64 );
    }
    v5 = 106i64;
    v6 = 848;
    do
    {
      v1 = __ROR8__(v1 - *v3++, v2);
      v6 -= 8;
      --v5;
    }
    while( v5 );
    for( ; v6; --v6 )
    {
      v7 = *(unsigned __int8 *)v3;
      v3 = (_QWORD *)((char *)v3 + 1);
      v1 = __ROR8__(v1 - v7, v2);
    }
    qword_140C4C538 = v1;
    qword_140C4C530 = KiQueryUnbiasedInterruptTime(1u) + 41929663 * (__rdtsc() >> 4) % 0x12A05F2000i64 + 288000000000i64;
  }
  *(&CmpDummyThreadEvent + 24) = 8i64;
  *(&CmpDummyThreadEvent + 39) = CmpLazyCommitDpcRoutine;
  *(&CmpDummyThreadEvent + 72) = 275;
  *(&CmpDummyThreadEvent + 26) = (char *)&CmpDummyThreadEvent + 200;
  *(&CmpDummyThreadEvent + 25) = (char *)&CmpDummyThreadEvent + 200;
  qword_140C47888 = (__int64)&CmpDelayFreeRMListHead;
  CmpDelayFreeRMListHead = &CmpDelayFreeRMListHead;
  *(_QWORD *)&CmpDelayFreeRMLock.gap14[20] = &CmpDelayFreeRMLock.gap14[12];
  *(_QWORD *)&CmpDelayFreeRMLock.gap14[12] = &CmpDelayFreeRMLock.gap14[12];
  CmpDelayFreeRMWorkItem.WorkerRoutine = CmpDelayFreeRMWorker;
  CmpDelayFreeRMDpc.DeferredRoutine = (void(__fastcall *)(_KDPC *, void *, void *, void *))CmpDelayFreeRMDpcRoutine;
  *(&CmpDummyThreadEvent + 40) = 0i64;
  *(&CmpDummyThreadEvent + 43) = 0i64;
  *(&CmpDummyThreadEvent + 38) = 0i64;
  *(&CmpDummyThreadEvent + 27) = 0i64;
  *(&CmpDummyThreadEvent + 63) = 0;
  *(&CmpDummyThreadEvent + 124) = 0;
  CmpDelayFreeRMLock.Count = 1;
  CmpDelayFreeRMLock.Owner = 0i64;
  CmpDelayFreeRMLock.Contention = 0;
  *(_WORD *)&CmpDelayFreeRMLock.gap14[4] = 1;
  CmpDelayFreeRMLock.gap14[6] = 6;
  *(_DWORD *)&CmpDelayFreeRMLock.gap14[8] = 0;
  CmpDelayFreeRMWorkItem.Parameter = 0i64;
  CmpDelayFreeRMWorkItem.List.Flink = 0i64;
  CmpDelayFreeRMDpc.TargetInfoAsUlong = 275;
  CmpDelayFreeRMDpc.DeferredContext = 0i64;
  CmpDelayFreeRMDpc.DpcData = 0i64;
  CmpDelayFreeRMDpc.ProcessorHistory = 0i64;
  KeInitializeTimerEx((INT64)&CmpDelayFreeRMTimer, 0);
  *(&CmpDummyThreadEvent + 17) = (char *)&CmpDummyThreadEvent + 128;
  *(&CmpDummyThreadEvent + 16) = (char *)&CmpDummyThreadEvent + 128;
}

Referenced by:

CmInitSystem1