IopAddPageRangeToPageMaps

void __fastcall IopAddPageRangeToPageMaps(
        __int64 a1,
        __int128 *a2,
        unsigned __int64 a3,
        unsigned __int64 a4,
        unsigned int a5){
  __int128 v9; 
  unsigned int v10; 
  unsigned int v11; 
  int v12; 
  INT64 v13[2]; 
  RtlSetBitsEx((INT64)a2, a3, a4);
  if( a1 )
  {
    if( (a5 & 0xFF0) != 0 )
    {
      v9 = *a2;
      v10 = 56;
      v11 = (unsigned __int8)(a5 >> 4);
      v12 = (((unsigned __int64)(*(_QWORD *)(a1 + 48) + 7i64) >> 3) + 7) & 0xFFFFFFF8;
      for( *(_OWORD *)v13 = v9; v11; v11 >>= 1 )
      {
        v10 += v12;
        if( v10 + v12 > (unsigned __int64)(*(_QWORD *)(a1 + 32) - 0x2000i64) )
          break;
        v13[1] = a1 + v10;
        if( (v11 & 1) != 0 )
        {
          RtlSetBitsEx((INT64)v13, a3, a4);
        }
        else if( (v11 & 0x10) != 0 )
        {
          RtlClearBitsEx((INT64)v13, a3, a4);
          v11 &= ~0x10u;
        }
      }
    }
  }
}

Referenced by:

IopAddPageToPageMap