MmFreeBootRegistry

VOID __stdcall MmFreeBootRegistry(){
  UINT64 *v0; 
  UINT64 *v1; 
  UINT64 v2; 
  UINT64 *v3; 
  UINT64 i; 
  _MMPTE *PteAddress; 
  UINT64 v6; 
  __int64 v7; 
  UINT64 v8; 
  _MMPTE *v9; 
  INT64 *v10; 
  UINT64 v11; 
  UINT64 v12; 

  v0 = (UINT64 *)_InterlockedCompareExchange64((_QWORD *)&stru_140C4DB30 + 540, 1i64, 0i64);
  v1 = v0;
  if( v0 )
  {
    v2 = *v0;
    v3 = v0 + 1;
    qsort((UINT64)(v0 + 1), *v0, 8ui64, (INT64)MiRegistryVaSort, v10, v11, v12);
    for( i = 0i64; i < v2; ++i )
    {
      PteAddress = MiGetPteAddress((VOID *)*v3);
      v8 = (UINT64)PteAddress;
      if( i == v2 - 1 || v7 + 4096 != v3[1] )
      {
        if( v6 == 1 )
        {
          v6 = 1i64;
          v9 = PteAddress;
        }
        else
        {
          v8 = (UINT64)&PteAddress[-v6];
          v9 = (_MMPTE *)(v8 + 8);
        }
        MiDeleteBootRange(v9, v6, v8);
      }
      ++v3;
    }
    ExFreePoolWithTag(v1, 0);
    *(&stru_140C4DB30 + 540) = 0i64;
  }
}

Referenced by:

CmpFreeBootRegistry
HvpDropPagedBins
MmFreeLoaderBlock