IopMarkPagesForDpcData
__int64 __fastcall IopMarkPagesForDpcData(__int64 (__fastcall **a1)(_QWORD, __int64, __int64)){
unsigned int v1;
__int64 v2;
__int64 v4;
unsigned __int64 v5;
unsigned int v6;
__int64 v7;
unsigned int v8;
_QWORD *v9;
__int64 result;
_QWORD *i;
v1 = 0;
v2 = 0i64;
if( !(_DWORD)KeNumberProcessors_0 )
return v1;
while( 1 )
{
v4 = (__int64)*(&KiProcessorBlock + v2);
if( v4 )
break;
LABEL_18:
v2 = (unsigned int)(v2 + 1);
if( (unsigned int)v2 >= (unsigned int)KeNumberProcessors_0 )
return v1;
}
v5 = *(_QWORD *)(v4 + 33960);
if( v5 )
{
v6 = *(_DWORD *)(v4 + 33968) - v5;
v7 = (unsigned int)(8 * dword_140CFA32C);
if( v6 <= (unsigned int)v7 )
v7 = v6;
if( !(_DWORD)v7 )
v7 = 8i64 * (unsigned int)KiDpcWatchdogProfileArrayLength;
MmAddRangeToCrashDump(a1, v5, v7);
}
v8 = 0;
v9 = (_QWORD *)(v4 + 12480);
while( 1 )
{
result = MmAddRangeToCrashDump(a1, (unsigned __int64)v9, 40i64);
v1 = result;
if( (int)result < 0 )
return result;
for( i = (_QWORD *)*v9; i; i = (_QWORD *)*i )
{
result = MmAddRangeToCrashDump(a1, (unsigned __int64)(i - 1), 64i64);
v1 = result;
if( (int)result < 0 )
return result;
if( i[6] != 1i64 )
{
result = MmAddRangeToCrashDump(a1, i[6], 96i64);
v1 = result;
if( (int)result < 0 )
return result;
}
}
++v8;
v9 += 5;
if( v8 >= 2 )
goto LABEL_18;
}
}Referenced by:
IopAddMiniDumpPagesToPartialKernelDump