IopMarkPagesForDpcData
NTSTATUS __stdcall IopMarkPagesForDpcData(_MM_KERNEL_DUMP_CONTEXT *Context){
NTSTATUS v1;
__int64 v2;
__int64 v4;
VOID *v5;
unsigned int v6;
UINT64 v7;
unsigned int v8;
__int64 **v9;
NTSTATUS result;
__int64 **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 = *(VOID **)(v4 + 33960);
if( v5 )
{
v6 = *(_DWORD *)(v4 + 33968) - (_DWORD)v5;
v7 = (unsigned int)(8 * dword_140CFA32C);
if( v6 <= (unsigned int)v7 )
v7 = v6;
if( !(_DWORD)v7 )
v7 = 8i64 * dword_140C50A78;
MmAddRangeToCrashDump(Context, v5, v7);
}
v8 = 0;
v9 = (__int64 **)(v4 + 12480);
while( 1 )
{
result = MmAddRangeToCrashDump(Context, v9, 0x28ui64);
v1 = result;
if( result < 0 )
return result;
for( i = (__int64 **)*v9; i; i = (__int64 **)*i )
{
result = MmAddRangeToCrashDump(Context, i - 1, 0x40ui64);
v1 = result;
if( result < 0 )
return result;
if( i[6] != (__int64 *)1 )
{
result = MmAddRangeToCrashDump(Context, i[6], 0x60ui64);
v1 = result;
if( result < 0 )
return result;
}
}
++v8;
v9 += 5;
if( v8 >= 2 )
goto LABEL_18;
}
}Referenced by:
IopAddMiniDumpPagesToPartialKernelDump