MiConvertStaticSubsections

__int64 __fastcall MiConvertStaticSubsections(__int64 a1){
  __int64 v1; 
  ULONG_PTR v2; 
  __int16 v3; 
  unsigned int v5; 
  unsigned __int64 v6; 
  v1 = 0i64;
  v2 = a1 + 128;
  do
  {
    v3 = *(_WORD *)(v2 + 34);
    if( (v3 & 8) == 0 )
    {
      if( (v3 & 1) != 0 )
      {
        if( (*(_DWORD *)(v2 + 48) & 0x3FFFFFFF) != 0 )
        {
          MiUpdateSubsectionCrossPartitionRefs((_DWORD *)v2, 0x3FFFFFFFi64);
          v3 = *(_WORD *)(v2 + 34);
          v5 = 24;
        }
        else
        {
          v5 = 4;
        }
        v6 = *(unsigned int *)(v2 + 44);
        *(_QWORD *)(v2 + 96) = 1i64;
        *(_WORD *)(v2 + 34) = v3 & 0xFFFE;
        v1 += MiRemoveViewsFromSection(v2, v6, v5);
      }
      else if( *(_QWORD *)(v2 + 8) && !*(_QWORD *)(v2 + 96) )
      {
        KeBugCheckEx(0x1Au, 0x42003ui64, v2, 0i64, 0i64);
      }
    }
    v2 = *(_QWORD *)(v2 + 16);
  }
  while( v2 );
  return v1;
}

Referenced by:

MiInsertUnusedSegment