ObpDestroyStackAndObjectTables
VOID __stdcall ObpDestroyStackAndObjectTables(
_STACK_TABLE *StackTable,
_OBJECT_REF_INFO **ObjectTable,
_SINGLE_LIST_ENTRY *WorkItemList){
_OBJECT_REF_INFO **v6;
__int64 v7;
_OBJECT_REF_INFO *v8;
_OBJECT_REF_INFO *NextRef;
unsigned __int16 v10;
void *v11;
v6 = ObjectTable;
v7 = 401i64;
do
{
v8 = *v6;
if( *v6 )
{
do
{
NextRef = (_OBJECT_REF_INFO *)v8->NextRef;
ExFreePoolWithTag(v8, 0x7452624Fu);
v8 = NextRef;
}
while( NextRef );
}
++v6;
--v7;
}
while( v7 );
ExFreePoolWithTag(ObjectTable, 0x7452624Fu);
v10 = 0;
if( (StackTable->TraceCapacity & 0xFC00) != 0 )
{
do
ExFreePoolWithTag(StackTable->StackTrace[v10++], 0x7452624Fu);
while( v10 < (unsigned __int16)(StackTable->TraceCapacity >> 10) );
}
v11 = StackTable;
while( 1 )
{
ExFreePoolWithTag(v11, 0x7452624Fu);
if( !WorkItemList )
break;
v11 = WorkItemList;
WorkItemList = WorkItemList->Next;
}
}Referenced by:
ObpStopRuntimeStackTrace