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