MiCheckLogPinDriverAddresses
VOID __stdcall MiCheckLogPinDriverAddresses(){
unsigned int *Buffer;
unsigned int v1;
unsigned int *v2;
bool i;
bool v4;
bool v5;
unsigned int v6;
char *v7;
unsigned int v8;
char *v9;
unsigned int v10;
char *v11;
if( *(_QWORD *)&qword_140C4EC20 )
{
if( stru_140C29EA0.SizeOfBitMap )
{
if( stru_140C29EA0.SizeOfBitMap > 1 )
{
Buffer = stru_140C29EA0.Buffer;
v1 = *stru_140C29EA0.Buffer;
v2 = &stru_140C29EA0.Buffer[(unsigned __int64)(stru_140C29EA0.SizeOfBitMap - 1) >> 5];
if( stru_140C29EA0.Buffer != v2 )
{
for( i = v1 == 0; i; i = *Buffer == 0 )
{
if( ++Buffer == v2 )
{
v4 = ((0xFFFFFFFF >> ~(LOBYTE(stru_140C29EA0.SizeOfBitMap) - 1)) & *Buffer) == 0;
goto LABEL_10;
}
}
goto LABEL_20;
}
v4 = (v1 & (0xFFFFFFFF >> (32 - LOBYTE(stru_140C29EA0.SizeOfBitMap)))) == 0;
LABEL_10:
v5 = v4;
goto LABEL_11;
}
if( stru_140C29EA0.SizeOfBitMap == 1 )
{
v5 = !_bittest((const signed __int32 *)stru_140C29EA0.Buffer, 0);
LABEL_11:
if( v5 )
{
v6 = 0;
v7 = byte_140C29FB0;
LABEL_13:
v8 = 0;
v9 = v7;
LABEL_14:
v10 = 0;
v11 = v9;
while( *(_DWORD *)v11 == *((_DWORD *)v11 + 1) )
{
++v10;
v11 += 8;
if( v10 >= 2 )
{
++v8;
v9 += 16;
if( v8 < 2 )
goto LABEL_14;
++v6;
v7 += 32;
if( v6 < 2 )
goto LABEL_13;
return;
}
}
}
}
}
LABEL_20:
if( !_InterlockedCompareExchange16(&word_140C2A010, 1, 0) )
{
WorkItem.Parameter = 0i64;
WorkItem.List.Flink = 0i64;
WorkItem.WorkerRoutine = (void(__fastcall *)(void *))MiLogPinDriverAddressesWorker;
ExQueueWorkItem(&WorkItem, DelayedWorkQueue);
}
}
}Referenced by:
MiWorkingSetManager