IopAddTriageDumpDataBlock
VOID __fastcall IopAddTriageDumpDataBlock(
UINT64 NumDataArrays,
_IO_TRIAGE_DUMP_DATA_ARRAY *DataArrays,
_IO_TRIAGE_DUMP_DATA_ARRAY *ModifyArray,
VOID *Address,
UINT64 Length){
char *v6;
unsigned int v8;
unsigned int v9;
char *i;
unsigned int v11;
char **j;
unsigned int v13;
_QWORD *v14;
unsigned __int64 v15;
v6 = (char *)Address;
v8 = NumDataArrays;
if( (unsigned int)(Length - 1) <= 0x3FFFE && KiIsAddressRangeValid((INT64)Address, (unsigned int)Length) )
{
v9 = 0;
for( i = &v6[(unsigned int)Length]; v9 < v8; DataArrays += 4 )
{
v11 = 0;
for( j = (char **)*((_QWORD *)DataArrays + 1); v11 < *DataArrays; j += 2 )
{
v15 = (unsigned __int64)j[1];
if( (unsigned __int64)v6 < v15 && i > *j )
{
if( v6 < *j )
{
if( (unsigned __int64)i <= v15 )
i = *j;
}
else
{
if( (unsigned __int64)i <= v15 )
return;
v6 = j[1];
}
}
++v11;
}
++v9;
}
if( ModifyArray )
{
v13 = *ModifyArray;
if( *ModifyArray < (unsigned int)ModifyArray[1] )
{
v14 = (_QWORD *)(*((_QWORD *)ModifyArray + 1) + 16i64 * v13);
*ModifyArray = v13 + 1;
*v14 = v6;
v14[1] = i;
}
}
}
}Referenced by:
IoAddTriageDumpDataBlock
IopAddRunTimeTriageDataBlocks