MiPopulateCfgBitMap

__int64 __fastcall MiPopulateCfgBitMap(
        _QWORD *a1,
        unsigned __int64 a2,
        __int64 a3,
        int a4,
        unsigned __int64 a5,
        __int64 a6){
  INT64 v6; 
  UINT64 *v7; 
  volatile signed __int64 *v9; 
  UINT64 Src; 
  INT64 v13; 
  unsigned int v14; 
  UINT64 v16; 
  __int128 v17; 
  int v18; 
  v6 = a1[2];
  v7 = (UINT64 *)&v17;
  v18 = 0;
  v9 = (volatile signed __int64 *)(v6 + 40);
  Src = *a1 + ((2 * (a5 >> 4)) >> 3);
  v17 = 0i64;
  if( a2 <= 1 )
    v7 = 0i64;
  ExAcquirePushLockExclusiveEx(v6 + 40, 0i64);
  if( (unsigned int)MiVadDeleted(v6) )
  {
    if( (_InterlockedExchangeAdd64(v9, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
      ExfTryToWakePushLock((volatile INT64 *)(v6 + 40));
    KeAbPostRelease((PVOID)(v6 + 40));
    return 3221225738i64;
  }
  else
  {
    LODWORD(v16) = 0;
    v14 = MiCopyToCfgBitMap((INT64)a1, a2, v13, (unsigned int)a4, Src, v6, v16, v7, (2 * ((a6 - a5) >> 4)) >> 3);
    if( (_InterlockedExchangeAdd64(v9, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
      ExfTryToWakePushLock((volatile INT64 *)(v6 + 40));
    KeAbPostRelease((PVOID)(v6 + 40));
    return v14;
  }
}

Referenced by:

MiCfgMarkValidEntries
MiMarkPrivateImageCfgBits
MiMarkPrivateOpenCfgBits