MiAddPartitionDataToCrashDump
NTSTATUS __stdcall MiAddPartitionDataToCrashDump(_MM_KERNEL_DUMP_CONTEXT *Context){
unsigned int v1;
int v3;
unsigned int v4;
int v5;
int v6;
__int64 v7;
unsigned int v8;
unsigned int v9;
_QWORD *v10;
__int64 i;
unsigned __int64 v12;
unsigned int v13;
unsigned int v14;
v1 = 0;
v3 = MmAddRangeToCrashDump(Context, *(&stru_140C4DB30 + 267), 8ui64);
if( v3 >= 0 )
{
v3 = MmAddRangeToCrashDump(Context, *(&stru_140C4DB30 + 263), 0x10ui64);
if( v3 >= 0 )
{
v3 = MmAddRangeToCrashDump(
Context,
*(VOID **)(*(&stru_140C4DB30 + 263) + 8i64),
8
* (((unsigned __int64)(unsigned int)**(&stru_140C4DB30 + 263) >> 6)
+ ((**(&stru_140C4DB30 + 263) & 0x3F) != 0)));
if( v3 >= 0 )
{
do
{
v4 = v1 < **(&stru_140C4DB30 + 263) ? v1 : 0;
v5 = **(&stru_140C4DB30 + 263) - 1;
v6 = (*(_DWORD *)(*(&stru_140C4DB30 + 263) + 8i64) & 4) != 0i64 ? 0x20 : 0;
v7 = *(_QWORD *)(*(&stru_140C4DB30 + 263) + 8i64)
- ((*(_QWORD *)(*(&stru_140C4DB30 + 263) + 8i64) & 4i64) != 0 ? 4 : 0);
while( 1 )
{
v8 = v6 + v5;
if( v5 - v4 == -1 )
goto LABEL_6;
v10 = (_QWORD *)(v7 + 8 * ((unsigned __int64)(v6 + v4) >> 6));
for( i = ~*v10 | ((1i64 << ((v6 + v4) & 0x3F)) - 1); i == -1; i = ~*v10 )
{
if( (unsigned __int64)++v10 > v7 + 8 * ((unsigned __int64)v8 >> 6) )
goto LABEL_6;
}
_BitScanForward64(&v12, ~i);
v9 = v12 + ((unsigned int)(((__int64)v10 - v7) >> 3) << 6);
if( v9 > v8 )
{
LABEL_6:
v9 = -1;
}
else if( v9 != -1 )
{
break;
}
if( !v4 )
break;
v13 = v1 + 1;
if( v1 + 1 > **(&stru_140C4DB30 + 263) )
v13 = **(&stru_140C4DB30 + 263);
v5 = v13 - 1;
v4 = 0;
}
v14 = v9 - v6;
if( v9 == -1 )
v14 = -1;
if( v14 < v1 )
break;
if( v14 == -1 )
break;
v1 = v14 + 1;
v3 = MiAddPartitionToCrashDump(Context, *(_MI_PARTITION **)(*(&stru_140C4DB30 + 267) + 8i64 * v14));
}
while( v3 >= 0 );
if( v3 >= 0 )
{
if( *(&stru_140C4DB30 + 271) )
v3 = MmAddRangeToCrashDump(
Context,
*(&stru_140C4DB30 + 271),
8 * ((*(&stru_140C4DB30 + 270) >> 6) + ((*(&stru_140C4DB30 + 2160) & 0x3F) != 0)));
if( v3 >= 0 && *(&stru_140C4DB30 + 272) )
return MmAddRangeToCrashDump(Context, *(&stru_140C4DB30 + 272), 0x200000ui64);
}
}
}
}
return v3;
}Referenced by:
MmAddPrivateDataToCrashDump