MiMarkPrivateImageCfgBits

CHAR __fastcall MiMarkPrivateImageCfgBits(){
  _QWORD *v0; 
  INT64 v1; 
  __int64 v2; 
  _QWORD *v3; 
  LARGE_INTEGER *v4; 
  LARGE_INTEGER v5; 
  unsigned __int64 v6; 
  unsigned __int64 v7; 
  int v8; 
  __int64 v9; 
  __int64 v10; 
  __int64 v11; 
  __int64 v12; 
  int v13; 
  __int16 v14; 
  unsigned __int64 v15; 
  __int64 v16; 
  v2 = v1;
  v3 = v0;
  v4 = **(LARGE_INTEGER ***)(v1 + 72);
  v5 = *v4;
  v6 = ((*(unsigned int *)(v1 + 28) | ((unsigned __int64)*(unsigned __int8 *)(v1 + 33) << 32)) << 12) + 4096;
  v7 = (*(unsigned int *)(v1 + 24) | ((unsigned __int64)*(unsigned __int8 *)(v1 + 32) << 32)) << 12;
  if( MiVadMapsLargeImage(v1) )
  {
    MiMarkPrivateOpenCfgBits();
    if( v13 < 0 )
      return v13;
    v7 += (unsigned __int64)*((unsigned __int8 *)MiLocateVadEvent(v2, 16i64) + 8) << 16;
    v14 = _InterlockedCompareExchange64((volatile signed __int64 *)(v5.QuadPart + 24), -1i64, -1i64);
    v8 = 1;
    v15 = v7
        + ((__int64)(*(_QWORD *)(v5.QuadPart + 64)
                   + 8
                   * (((v14 & 0xFFF) != 0i64)
                    + ((unsigned __int64)_InterlockedCompareExchange64(
                                           (volatile signed __int64 *)(v5.QuadPart + 24),
                                           -1i64,
                                           -1i64) >> 12))
                   - *(_QWORD *)(v2 + 80)) >> 3 << 12);
    if( v6 > v15 )
      v6 = v15;
  }
  v9 = *(_QWORD *)(v2 + 80);
  v10 = *(_QWORD *)(v5.QuadPart + 64);
  if( v9 != v10 && !v8 )
  {
    v16 = (v9 - v10) >> 3 << 12;
    v7 += v16;
    v6 += v16;
  }
  LODWORD(v11) = MiGetControlAreaLoadConfig(v4);
  LOBYTE(v13) = MiPopulateCfgBitMap(v3, *(_QWORD *)(v11 + 16), v12, 0, v7, v6);
  return v13;
}

Referenced by:

MiMarkProcessCfgBits