MiAddPartitionDataToCrashDump
__int64 __fastcall MiAddPartitionDataToCrashDump(__int64 (__fastcall **a1)(_QWORD, __int64, __int64)){
unsigned int v1;
int v3;
unsigned int v4;
unsigned int v5;
int v6;
char *v7;
unsigned int v8;
unsigned int v9;
char *v10;
__int64 i;
unsigned __int64 v12;
unsigned int SizeOfBitMap;
unsigned int v14;
v1 = 0;
v3 = MmAddRangeToCrashDump(a1, qword_140C4E388, 8i64);
if( v3 >= 0 )
{
v3 = MmAddRangeToCrashDump(a1, (unsigned __int64)qword_140C4E368, 16i64);
if( v3 >= 0 )
{
v3 = MmAddRangeToCrashDump(
a1,
(unsigned __int64)qword_140C4E368->Buffer,
8
* (((unsigned __int64)qword_140C4E368->SizeOfBitMap >> 6) + ((qword_140C4E368->SizeOfBitMap & 0x3F) != 0)));
if( v3 >= 0 )
{
do
{
v4 = v1 < qword_140C4E368->SizeOfBitMap ? v1 : 0;
v5 = qword_140C4E368->SizeOfBitMap - 1;
v6 = ((__int64)qword_140C4E368->Buffer & 4) != 0i64 ? 0x20 : 0;
v7 = (char *)qword_140C4E368->Buffer - (((__int64)qword_140C4E368->Buffer & 4) != 0 ? 4 : 0);
while( 1 )
{
v8 = v6 + v5;
if( v5 - v4 == -1 )
goto LABEL_6;
v10 = &v7[8 * ((unsigned __int64)(v6 + v4) >> 6)];
for( i = ~*(_QWORD *)v10 | ((1i64 << ((v6 + v4) & 0x3F)) - 1); i == -1; i = ~*(_QWORD *)v10 )
{
v10 += 8;
if( v10 > &v7[8 * ((unsigned __int64)v8 >> 6)] )
goto LABEL_6;
}
_BitScanForward64(&v12, ~i);
v9 = v12 + ((unsigned int)((v10 - v7) >> 3) << 6);
if( v9 > v8 )
{
LABEL_6:
v9 = -1;
}
else if( v9 != -1 )
{
break;
}
if( !v4 )
break;
SizeOfBitMap = v1 + 1;
if( v1 + 1 > qword_140C4E368->SizeOfBitMap )
SizeOfBitMap = qword_140C4E368->SizeOfBitMap;
v5 = SizeOfBitMap - 1;
v4 = 0;
}
v14 = v9 - v6;
if( v9 == -1 )
v14 = -1;
if( v14 < v1 )
break;
if( v14 == -1 )
break;
v1 = v14 + 1;
v3 = MiAddPartitionToCrashDump(a1, *(_QWORD *)(qword_140C4E388 + 8i64 * v14));
}
while( v3 >= 0 );
if( v3 >= 0 )
{
if( qword_140C4E3A8 )
v3 = MmAddRangeToCrashDump(
a1,
qword_140C4E3A8,
8 * (((unsigned __int64)qword_140C4E3A0 >> 6) + ((qword_140C4E3A0 & 0x3F) != 0)));
if( v3 >= 0 && qword_140C4E3B0 )
return(unsigned int)MmAddRangeToCrashDump(a1, qword_140C4E3B0, 0x200000i64);
}
}
}
}
return(unsigned int)v3;
}Referenced by:
MmAddPrivateDataToCrashDump