MiSelectOverflowDllBase

INT64 __fastcall MiSelectOverflowDllBase(INT64 a1, UINT64 a2){
  unsigned __int64 v3; 
  int v4; 
  BOOL CanUseHighOverflowArea; 
  unsigned __int64 v6; 
  unsigned int v7; 
  __int64 *v9; 
  __int64 v10; 
  INT64 *v11; 
  _ETHREAD *CurrentThread; 
  unsigned __int64 v13; 
  INT64 v14; 
  v3 = ((*(_DWORD *)(a1 + 8) << 12) + 0xFFFF) & 0xFFFF0000;
  CanUseHighOverflowArea = MiImageCanUseHighOverflowArea(a1, a2);
  v6 = CanUseHighOverflowArea ? 0x10000000i64 : 0x4000000i64;
  if( v3 <= v6 )
  {
    v9 = &qword_140C4C8A8;
    if( v4 == 3 )
      v9 = qword_140C4C8D8;
    v10 = *v9;
    v11 = v9 + 1;
    if( CanUseHighOverflowArea )
    {
      v10 = v9[2];
      v11 = v9 + 3;
    }
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    v13 = v6 + v10;
    --*((_WORD *)CurrentThread + 243);
    ExAcquirePushLockExclusiveEx((UINT64)&qword_140C4C888, 0i64);
    v14 = v10;
    if( v3 <= v13 - *v11 )
      v14 = *v11;
    *v11 = v14 + v3;
    if( v14 + v3 == v13 )
      *v11 = v10;
    if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&qword_140C4C888, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
      ExfTryToWakePushLock((volatile INT64 *)&qword_140C4C888);
    KeAbPostRelease(&qword_140C4C888);
    KiLeaveGuardedRegionUnsafe((__int64)CurrentThread);
    return v14;
  }
  else
  {
    v7 = (unsigned __int8)ExGenRandom(1i64) << 16;
    if( a2 < 0x1010000 || a2 > v3 + a2 || v3 + a2 > 0x7FFFFFFF0000i64 )
      return v7 + 0x10000i64;
    else
      return a2 - v7;
  }
}

Referenced by:

MiSelectImageBase