MiFindEmptyAddressRangeDownTree

NTSTATUS __stdcall MiFindEmptyAddressRangeDownTree(
        _RTL_AVL_TREE *Table,
        UINT64 SizeOfRange,
        UINT64 Alignment,
        VOID *LowestAddress,
        VOID *HighestAddressToEndAt,
        VOID **Base){
  UINT64 v10; 
  unsigned __int64 v11; 
  unsigned __int64 v12; 
  UINT64 v13; 
  __int64 v14; 
  unsigned __int64 v15; 
  unsigned __int64 v16; 
  UINT64 v17; 
  unsigned __int64 v18; 
  unsigned __int64 v19; 
  _RTL_BALANCED_NODE *Root; 
  unsigned __int64 v21; 
  int *v22; 
  int *v23; 
  unsigned __int64 v24; 
  unsigned __int64 v25; 
  unsigned __int64 v26; 
  int *v27; 
  UINT64 v28; 
  unsigned __int64 v29; 
  unsigned __int64 v30; 
  unsigned __int64 v31; 
  UINT64 v32; 
  unsigned __int64 v33; 
  __int64 v34; 
  __int64 v35; 
  unsigned __int64 v36; 
  unsigned __int64 v37; 
  INT64 v38; 
  __int64 v40; 
  unsigned __int64 v41; 
  __int64 v42; 
  int v43[30]; 
  UINT64 v44; 
  _RTL_BALANCED_NODE *v45; 
  unsigned __int64 *v46; 

  memset(v43, 0i64, 0x40u);
  v10 = (SizeOfRange + 4095) & 0xFFFFFFFFFFFFF000ui64;
  v11 = (unsigned __int64)LowestAddress >> 12;
  v12 = v10 >> 12;
  if( HighestAddressToEndAt >= Base || (char *)Base - (_BYTE *)HighestAddressToEndAt < v10 )
    goto LABEL_39;
  v13 = Alignment;
  v14 = -(__int64)Alignment;
  v15 = (unsigned __int64)Base >> 12;
  v16 = v14 & ((unsigned __int64)Base - v10);
  v17 = v13 >> 12;
  v18 = v16 >> 12;
  v19 = 0i64;
  v44 = v17;
  if( v11 )
  {
    LODWORD(v40) = MiHonorRangeStraddleRequirement((v14 & ((unsigned __int64)Base - v10)) >> 12, v10 >> 12, v11, 1i64);
    v17 = v44;
    v15 = (unsigned __int64)Base >> 12;
    v18 = ~(v44 - 1) & v40;
    v16 = v18 << 12;
  }
  if( v16 < (unsigned __int64)HighestAddressToEndAt )
  {
LABEL_39:
    LODWORD(v19) = -1073741801;
  }
  else
  {
    Root = Table->Root;
    if( Table->Root )
    {
      v21 = v19;
      do
      {
        v22 = (int *)Root;
        v45 = Root;
        Root = Root->Children[1];
      }
      while( Root );
      v23 = v22;
      v24 = (unsigned __int64)HighestAddressToEndAt >> 12;
      while( 1 )
      {
        if( v22 )
        {
          v23 = v43;
          v21 = (unsigned __int64)v22;
          LOBYTE(v43[8]) = (unsigned __int64)Base >> 44;
          v45 = (_RTL_BALANCED_NODE *)v19;
          v43[6] = v15;
        }
        else
        {
          v25 = *(_QWORD *)v21;
          v26 = v21;
          if( *(_QWORD *)v21 )
          {
            while( 1 )
            {
              v21 = v25;
              if( *(_QWORD *)(v25 + 8) == v19 )
                break;
              v25 = *(_QWORD *)(v25 + 8);
            }
          }
          else
          {
            while( 1 )
            {
              v21 = *(_QWORD *)(v21 + 16) & 0xFFFFFFFFFFFFFFFCui64;
              if( !v21 || *(_QWORD *)(v21 + 8) == v26 )
                break;
              v26 = v21;
            }
          }
        }
        v27 = v43;
        if( v21 )
        {
          v28 = v17 - 1;
          v29 = (unsigned __int64)HighestAddressToEndAt >> 12;
          v30 = (*(unsigned int *)(v21 + 28) | ((unsigned __int64)*(unsigned __int8 *)(v21 + 33) << 32)) + 1;
          if( v30 >= v24 )
            v29 = (*(unsigned int *)(v21 + 28) | ((unsigned __int64)*(unsigned __int8 *)(v21 + 33) << 32)) + 1;
          if( v30 >= v24 )
            v27 = (int *)v21;
          v31 = v29 + v17 - 1;
        }
        else
        {
          v43[7] = v19;
          v28 = v17 - 1;
          BYTE1(v43[8]) = v19;
          v31 = v24 + v17 - 1;
        }
        v32 = ~v28;
        v33 = v32 & v31;
        if( v11 )
        {
          LODWORD(v41) = MiHonorRangeStraddleRequirement(v33, v12, v11, 0i64);
          v17 = v44;
          v33 = v41;
        }
        v15 = (unsigned __int64)Base >> 12;
        if( v33 <= v18 )
        {
          v34 = *((unsigned __int8 *)v23 + 32);
          v35 = (unsigned int)v23[6];
          v36 = (unsigned __int64)Base >> 12;
          v37 = v35 | (v34 << 32);
          if( v37 <= (unsigned __int64)Base >> 12 )
            v36 = v37;
          if( v36 > v33 && v12 <= v36 - v33 )
            break;
        }
        if( v27 == v43 )
          goto LABEL_39;
        v22 = (int *)v45;
        v23 = v27;
      }
      v38 = v32 & (v36 - v12);
      if( v11 )
      {
        LODWORD(v42) = MiHonorRangeStraddleRequirement(v38, v12, v11, 1i64);
        v38 = v32 & v42;
      }
      *v46 = v38 << 12;
    }
    else
    {
      *v46 = v16;
    }
  }
  return v19;
}

Referenced by:

MiFindEmptyAddressRangeDown
MiFinishCreateSection