RtlAvlInsertNodeEx

CHAR __fastcall RtlAvlInsertNodeEx(_RTL_BALANCED_NODE **RootPointer, UINT64 a2, BOOL a3, _RTL_BALANCED_NODE *a4){
  _RTL_BALANCED_NODE *v4; 
  unsigned __int8 v5; 
  UINT64 v6; 
  _BYTE *v8; 
  char v9; 
  char v10; 
  char v11; 
  __int64 v12; 
  _QWORD *v13; 
  unsigned __int64 v14; 
  __int64 v15; 
  __int64 v16; 
  _RTL_BALANCED_NODE *v17; 
  __int64 v18; 

  LOBYTE(v4) = 0;
  v5 = a3;
  a4->Children[0] = 0i64;
  v6 = (UINT64)a4;
  a4->Children[1] = 0i64;
  a4->ParentValue = a2;
  if( !a2 )
  {
    *RootPointer = a4;
    return(char)v4;
  }
  v8 = (_BYTE *)(a2 + 16);
  *(_QWORD *)(a2 + 8i64 * a3) = v6;
  v9 = *(_BYTE *)(a2 + 16);
  LOBYTE(v4) = 2 * v5;
  v10 = (-1 - 2 * v5) & 3;
  v11 = v9 & 3;
  if( (v9 & 3) != 0 )
  {
LABEL_5:
    if( v11 != v10 )
    {
      *(_BYTE *)(a2 + 16) &= 0xFCu;
      return(char)v4;
    }
    if( (*(_BYTE *)(v6 + 16) & 3) != v11 )
    {
      v4 = RtlpTreeDoubleRotateNodes(RootPointer, (_RTL_BALANCED_NODE *)a2, (_RTL_BALANCED_NODE *)v6, v5);
      *(_BYTE *)(v16 + 16) &= 0xFCu;
      v17 = v4;
      LOBYTE(v4) = *(_BYTE *)(v6 + 16) & 0xFC;
      *(_BYTE *)(v6 + 16) = (_BYTE)v4;
      if( v11 == (v17->_bf_0 & 3) )
      {
        LOBYTE(v4) = (v11 ^ *(_BYTE *)(v16 + 16) ^ 0xFE) & 3;
        *(_BYTE *)(v16 + 16) ^= (unsigned __int8)v4;
        v17->_bf_0 &= 0xFCu;
      }
      else
      {
        if( v11 == ((v17->_bf_0 ^ 0xFE) & 3) )
        {
          LOBYTE(v4) = v11 | (unsigned __int8)v4;
          *(_BYTE *)(v6 + 16) = (_BYTE)v4;
        }
        v17->_bf_0 &= 0xFCu;
      }
      return(char)v4;
    }
    if( (*(_QWORD *)(v6 + 16) & 0xFFFFFFFFFFFFFFFCui64) == a2 )
    {
      v12 = v5 ^ 1u;
      v13 = (_QWORD *)(a2 + 8i64 * v5);
      if( *v13 == v6 )
      {
        v14 = *(_QWORD *)(a2 + 16) & 0xFFFFFFFFFFFFFFFCui64;
        if( v14 )
        {
          if( *(_QWORD *)(v14 + 8) == a2 )
          {
            *(_QWORD *)(v14 + 8) = v6;
          }
          else
          {
            if( *(_QWORD *)v14 != a2 )
              goto LABEL_28;
            *(_QWORD *)v14 = v6;
          }
        }
        else
        {
          if( *RootPointer != (_RTL_BALANCED_NODE *)a2 )
            goto LABEL_28;
          *RootPointer = (_RTL_BALANCED_NODE *)v6;
        }
        *(_QWORD *)(v6 + 16) = v14 | *(_DWORD *)(v6 + 16) & 3;
        v15 = *(_QWORD *)(v6 + 8 * v12);
        if( !v15 )
        {
LABEL_13:
          *v13 = v15;
          *(_QWORD *)(v6 + 8 * v12) = a2;
          v4 = (_RTL_BALANCED_NODE *)(v6 | *(_DWORD *)(a2 + 16) & 3);
          *(_QWORD *)(a2 + 16) = v4;
          *(_BYTE *)(v6 + 16) &= 0xFCu;
          *(_BYTE *)(a2 + 16) &= 0xFCu;
          return(char)v4;
        }
        v18 = *(_QWORD *)(v15 + 16);
        if( (v18 & 0xFFFFFFFFFFFFFFFCui64) == v6 )
        {
          *(_QWORD *)(v15 + 16) = a2 | v18 & 3;
          goto LABEL_13;
        }
      }
    }
LABEL_28:
    __fastfail(0x1Du);
  }
  while( 1 )
  {
    v6 = a2;
    *v8 = v10 | v9 & 0xFC;
    a2 = *(_QWORD *)v8 & 0xFFFFFFFFFFFFFFFCui64;
    if( !a2 )
      return(char)v4;
    v8 = (_BYTE *)(a2 + 16);
    v9 = *(_BYTE *)(a2 + 16);
    v5 = *(_QWORD *)a2 != v6;
    LOBYTE(v4) = 2 * v5;
    v10 = (-1 - 2 * v5) & 3;
    v11 = v9 & 3;
    if( (v9 & 3) != 0 )
      goto LABEL_5;
  }
}

Referenced by:

ExpWnfCreateNameInstance
MiActOnPartitionNodePages
MiAddMdlTracker
MiAddRangeToPartitionTree
MiAllocateEntireImageFileExtents
MiAweViewInserter
MiBeginPageAccessor
MiCombiningInProgress
MiCreateEnclaveRegions
MiCreateKernelStackNode
MiDeletePartitionResources
MiFindLargePageMemory
MiFinishCreateSection
MiFlowThroughInsertNode
MiFreePartitionTree
MiHotRemoveHugeRange
MiInitializeDriverPtes
MiInsertClone
MiInsertHotPatchRecord
MiInsertInSystemSpace
MiInsertMappingNode
MiInsertPartitionPages
MiInsertSecureImageActivePatch
MiInsertSharedCommitNode
MiInsertSubsectionNode
MiInsertVad
MiLoadHotPatchForUserSid
MiMakeIoRangePermanent
MiMarkHugePfnBad
MiMergePageNodes
MiProcessCrcList
MiProcessLoaderEntry
MiReferenceIoPages
MiReleasePartitionHugeIoSpace
MiReplaceSystemProtoPtesNode
MiSessionInsertImage
MiSharePages
MiUpdatePageFileList
MiUpdatePerSessionProto
MiUpdateSystemProtoPtesTree
MiZeroLargePages
MmManageFaultRange
MmUpdateMdlTrackerForMdlSwitch
PsAdjustBasicEnclaveThreadList
PsCallEnclave
PsLoadVsmEnclaveData
RtlAddDynamicEHContinuationTarget
RtlAddDynamicEnforcedAddressRange