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