CmpInitializeDelayedCloseTable
VOID __stdcall CmpInitializeDelayedCloseTable(){
unsigned __int64 v0;
__int64 v1;
__int128 *v2;
__int64 v3;
int v4;
__int64 v5;
__int64 v6;
_QWORD *v7;
char *v8;
unsigned int v9;
unsigned __int64 v10;
__int64 v11;
unsigned __int64 v12;
__int128 *v13;
__int64 v14;
int v15;
__int64 v16;
__int64 v17;
__int64 v18;
CmpDelayCloseWorkItem.Parameter = 0i64;
CmpDelayCloseWorkItem.List.Flink = 0i64;
CmpDelayCloseWorkItem.WorkerRoutine = (void(__fastcall *)(void *))CmpDelayCloseWorker;
KeInitializeGuardedMutex(&CmpDelayedCloseTableLock);
qword_140C47D08 = (__int64)&CmpDelayedLRUListHead;
CmpDelayedLRUListHead = (__int64)&CmpDelayedLRUListHead;
_mm_lfence();
if( !qword_140C4C460 )
{
v0 = __rdtsc();
v1 = (41929663 * (unsigned int)((((unsigned __int64)HIDWORD(v0) << 32) | (unsigned int)v0) >> 4)) ^ 0x5A4i64;
if( !v1 )
v1 = 1i64;
qword_140C4C460 = v1;
v2 = &KeServiceDescriptorTable;
v3 = (41929663 * (unsigned int)(__rdtsc() >> 4)) ^ 0x5A4i64;
qword_140C4C468 = v3;
_mm_prefetchnta(&KeServiceDescriptorTable);
v4 = 64;
v5 = v1;
v6 = 8i64;
do
{
v5 = __ROR8__(v5 - *(_QWORD *)v2, v3);
v2 = (__int128 *)((char *)v2 + 8);
v4 -= 8;
--v6;
}
while( v6 );
for( ; v4; --v4 )
{
v16 = *(unsigned __int8 *)v2;
v2 = (__int128 *)((char *)v2 + 1);
v5 = __ROR8__(v5 - v16, v3);
}
v7 = (_QWORD *)KeServiceDescriptorTable;
v8 = (char *)KeServiceDescriptorTable;
v9 = 4 * xmmword_140E018D0;
v10 = KeServiceDescriptorTable + (unsigned int)(4 * xmmword_140E018D0);
qword_140C4C478 = v5;
if( (unsigned __int64)KeServiceDescriptorTable < v10 )
{
do
{
_mm_prefetchnta(v8);
v8 += 64;
}
while( (unsigned __int64)v8 < v10 );
}
v11 = v1;
if( v9 >= 8 )
{
v12 = (unsigned __int64)v9 >> 3;
do
{
v11 = __ROR8__(v11 - *v7++, v3);
v9 -= 8;
--v12;
}
while( v12 );
}
for( ; v9; --v9 )
{
v17 = *(unsigned __int8 *)v7;
v7 = (_QWORD *)((char *)v7 + 1);
v11 = __ROR8__(v11 - v17, v3);
}
qword_140C4C480 = v11;
v13 = &KeServiceDescriptorTableShadow;
_mm_prefetchnta(&KeServiceDescriptorTableShadow);
v14 = 4i64;
v15 = 32;
do
{
v1 = __ROR8__(v1 - *(_QWORD *)v13, v3);
v13 = (__int128 *)((char *)v13 + 8);
v15 -= 8;
--v14;
}
while( v14 );
for( ; v15; --v15 )
{
v18 = *(unsigned __int8 *)v13;
v13 = (__int128 *)((char *)v13 + 1);
v1 = __ROR8__(v1 - v18, v3);
}
qword_140C4C488 = v1;
qword_140C4C470 = KiQueryUnbiasedInterruptTime(1u) + 41929663 * (__rdtsc() >> 4) % 0x12A05F2000i64 + 288000000000i64;
}
}Referenced by:
CmInitSystem1