IopLiveDumpReleaseResources
VOID __stdcall IopLiveDumpReleaseResources(INT64 a1, INT64 a2, UINT64 a3){
void *v4;
void *v5;
void *v6;
void *v7;
VOID *v8;
VOID *v9;
VOID *v10;
__int64 v11;
__int64 v12;
__int64 v13;
_ADAPTER_OBJECT *v14;
VOID *v15;
void *v16;
unsigned int v17;
__int64 v18;
void *v19;
void *v20;
if( a1 )
{
IopLiveDumpFreeMappingResources((_LIVEDUMP_CONTEXT *)a1);
v4 = *(void **)(a1 + 560);
if( v4 )
{
ExFreePoolWithTag(v4, 0x706D644Cu);
*(_QWORD *)(a1 + 560) = 0i64;
}
v5 = *(void **)(a1 + 592);
if( v5 )
{
ExFreePoolWithTag(v5, 0x706D644Cu);
*(_QWORD *)(a1 + 592) = 0i64;
}
v6 = *(void **)(a1 + 648);
if( v6 )
{
ExFreePoolWithTag(v6, 0x706D644Cu);
*(_QWORD *)(a1 + 648) = 0i64;
}
v7 = *(void **)(a1 + 672);
if( v7 )
{
ExFreePoolWithTag(v7, 0x706D644Cu);
*(_QWORD *)(a1 + 672) = 0i64;
}
v8 = *(VOID **)(a1 + 144);
if( v8 )
{
MmFreeIndependentPages(v8, *(unsigned int *)(a1 + 152));
*(_QWORD *)(a1 + 144) = 0i64;
}
v9 = *(VOID **)(a1 + 944);
if( v9 )
{
MmFreeIndependentPages(v9, *(unsigned int *)(a1 + 952));
*(_QWORD *)(a1 + 944) = 0i64;
}
v10 = *(VOID **)(a1 + 896);
if( v10 )
{
MmFreeIndependentPages(v10, *(unsigned int *)(a1 + 904));
*(_QWORD *)(a1 + 896) = 0i64;
}
IopLiveDumpFreeDumpBuffers((_LIVEDUMP_BUFFER_DESCRIPTOR *)(a1 + 680));
v11 = *(_QWORD *)(a1 + 800);
if( v11 )
{
ZwClose(v11);
*(_QWORD *)(a1 + 800) = 0i64;
}
v12 = *(_QWORD *)(a1 + 808);
if( v12 )
{
ZwClose(v12);
*(_QWORD *)(a1 + 808) = 0i64;
}
v13 = *(_QWORD *)(a1 + 816);
if( v13 )
{
ZwClose(v13);
*(_QWORD *)(a1 + 816) = 0i64;
}
v14 = *(_ADAPTER_OBJECT **)(a1 + 1000);
if( v14 )
{
HalPutDmaAdapter(v14);
*(_QWORD *)(a1 + 1000) = 0i64;
}
v15 = *(VOID **)(a1 + 992);
if( v15 != (VOID *)-1i64 )
{
ObCloseHandle(v15, 0);
*(_QWORD *)(a1 + 992) = 0i64;
}
v16 = *(void **)(a1 + 1016);
if( v16 )
{
v17 = 0;
if( *(_DWORD *)(a1 + 1008) )
{
do
{
v18 = v17;
ExFreePoolWithTag(*(PVOID *)(*(_QWORD *)(a1 + 1016) + 8i64 * v17++), 0x706D644Cu);
*(_QWORD *)(*(_QWORD *)(a1 + 1016) + 8 * v18) = 0i64;
}
while( v17 < *(_DWORD *)(a1 + 1008) );
v16 = *(void **)(a1 + 1016);
}
ExFreePoolWithTag(v16, 0x706D644Cu);
*(_QWORD *)(a1 + 1016) = 0i64;
*(_DWORD *)(a1 + 1008) = 0;
}
v19 = *(void **)(a1 + 1024);
if( v19 )
{
ExFreePoolWithTag(v19, 0x706D644Cu);
*(_QWORD *)(a1 + 1024) = 0i64;
}
v20 = *(void **)(a1 + 1032);
if( v20 )
{
ExFreePoolWithTag(v20, 0x706D644Cu);
*(_QWORD *)(a1 + 1032) = 0i64;
}
}
}Referenced by:
DbgkpWerCleanupContext
IoCaptureLiveDump
IoWriteDeferredLiveDumpData
IopLiveDumpAllocAndInitResources