MiGetUltraHugeAlreadyActive

VOID __stdcall MiGetUltraHugeAlreadyActive(_EPROCESS *Process){
  __int64 v1; 
  int v2; 
  UINT8 *v3; 
  __int64 v4; 
  __int64 v5; 
  __int64 v6; 
  unsigned int ClearBitsAndSet; 
  __int16 v8; 
  __int64 v9; 
  _QWORD **v10; 
  _QWORD *i; 
  _QWORD *v12; 
  unsigned int v13; 
  VOID *v14; 
  _TABLE_SEARCH_RESULT v15; 
  UINT64 v16; 
  UINT64 SpinCount; 

  LODWORD(SpinCount) = v2;
  v16 = (UINT64)Process;
  v4 = *(_QWORD *)(v1 + 224);
  v5 = v1;
  v6 = *(_QWORD *)(v1 + 232);
  if( v4 )
  {
    ClearBitsAndSet = (unsigned int)RtlFindClearBitsAndSet((_RTL_AVL_TABLE *)(v4 + 88), (VOID *)1, 0i64, v3, v14, v15);
    v8 = ClearBitsAndSet;
    if( ClearBitsAndSet != -1 )
    {
      v9 = *(_QWORD *)(v4 + 168);
      LODWORD(SpinCount) = 0;
      while( _interlockedbittestandset64((volatile signed __int32 *)(v9 + 24), 0x3Fui64) )
      {
        do
          KeYieldProcessorEx(&SpinCount);
        while( *(__int64 *)(v9 + 24) < 0 );
      }
      if( !*(_BYTE *)(v4 + 69) )
      {
LABEL_6:
        _InterlockedAnd64((volatile signed __int64 *)(v9 + 24), 0x7FFFFFFFFFFFFFFFui64);
        *(_DWORD *)(v5 + 64) = 0;
        *(_WORD *)(v5 + 216) = v8;
        return;
      }
      _InterlockedAnd64((volatile signed __int64 *)(v9 + 24), 0x7FFFFFFFFFFFFFFFui64);
    }
    MiDecrementHugeContext((PVOID)v4);
    *(_QWORD *)(v5 + 224) = 0i64;
  }
  v10 = (_QWORD **)(v6 + 56);
  for( i = *v10; i != v10; i = (_QWORD *)*i )
  {
    v12 = i - 9;
    v13 = (unsigned int)RtlFindClearBitsAndSet((_RTL_AVL_TABLE *)(i + 2), (VOID *)1, 0i64, v3, v14, v15);
    v8 = v13;
    if( v13 != -1 )
    {
      v9 = v12[21];
      LODWORD(v16) = 0;
      while( _interlockedbittestandset64((volatile signed __int32 *)(v9 + 24), 0x3Fui64) )
      {
        do
          KeYieldProcessorEx(&v16);
        while( *(__int64 *)(v9 + 24) < 0 );
      }
      if( !*((_BYTE *)v12 + 69) )
      {
        ++*((_DWORD *)v12 + 47);
        *(_QWORD *)(v5 + 224) = v12;
        goto LABEL_6;
      }
      _InterlockedAnd64((volatile signed __int64 *)(v9 + 24), 0x7FFFFFFFFFFFFFFFui64);
    }
  }
}

Referenced by:

MiGetHugePageToZero