MiFreeEnclaveModules
void __fastcall MiFreeEnclaveModules(volatile signed __int32 **a1, void *a2){
volatile signed __int32 *v4;
__int64 v5;
volatile signed __int32 **v6;
while( 1 )
{
v4 = *a1;
if( *a1 == (volatile signed __int32 *)a1 )
break;
if( a2 )
DbgkUnMapViewOfSection(a2, *((_QWORD *)v4 + 2));
v5 = *(_QWORD *)v4;
if( *(volatile signed __int32 **)(*(_QWORD *)v4 + 8i64) != v4
|| (v6 = (volatile signed __int32 **)*((_QWORD *)v4 + 1), *v6 != v4) )
{
__fastfail(3u);
}
*v6 = (volatile signed __int32 *)v5;
*(_QWORD *)(v5 + 8) = v6;
MiDereferenceEnclaveModule(v4);
}
}Referenced by:
MiCanDeleteEnclave
MmFreeVirtualMemory