MiInitializePrivateFixupBitmap

__int64 __fastcall MiInitializePrivateFixupBitmap(struct _RTL_BITMAP *a1, _QWORD *a2){
  _QWORD *v2; 
  __int64 v3; 
  unsigned int v5; 
  unsigned int v6; 
  __int64 v7; 
  __int64 v8; 
  unsigned __int64 i; 
  __int64 *v10; 
  __int64 v11; 
  UINT64 v12; 
  int v13; 
  v2 = a2 + 16;
  v3 = a2[12];
  v5 = *(_DWORD *)(*a2 + 8i64);
  a1->Buffer = &a1[1].SizeOfBitMap;
  a1->SizeOfBitMap = v5;
  RtlClearAllBits(a1);
  v6 = 0;
  v7 = 0i64;
  do
  {
    v8 = 8i64 * *((unsigned int *)v2 + 11);
    if( v2[1] < (unsigned __int64)(v8 + v2[1]) )
    {
      for( i = ((unsigned __int64)(v8 - 1) >> 3) + 1; i; --i )
      {
        v10 = *(__int64 **)(v3 + 32);
        v11 = *v10;
        if( v6 >= (unsigned __int64)v10[7] )
        {
LABEL_14:
          if( (v2[4] & 0xA) != 10 )
            goto LABEL_10;
        }
        else
        {
          v12 = v6;
          while( !*(_QWORD *)(v11 + 8i64 * (unsigned int)v12)
               && !MiDoesPageRequireRetpolineFixups((INT64)(v10 + 9), v12) )
          {
            v12 = (unsigned int)(v13 + 1);
            if( (_DWORD)v12 != v6 )
              goto LABEL_14;
          }
          _bittestandset((signed __int32 *)a1->Buffer, v6);
        }
        ++v7;
LABEL_10:
        ++v6;
      }
    }
    v2 = (_QWORD *)v2[2];
  }
  while( v2 );
  return v7;
}

Referenced by:

MiAddPrivateFixupEntryForSystemImage
MiAllocateFixupVad