CmpKeyEnumStackNotifyPromotion

_QWORD *__fastcall CmpKeyEnumStackNotifyPromotion(INT16 *a1){
  INT64 EntryAtLayerHeight; 
  _QWORD *result; 
  _QWORD *v4; 
  __int64 v5; 
  int v6; 
  EntryAtLayerHeight = CmpKeyEnumStackGetEntryAtLayerHeight((INT64)a1, *a1);
  CmpKeyEnumStackEntryNotifyPromotion((_QWORD *)EntryAtLayerHeight);
  result = (_QWORD *)CmpKeyNodeStackGetEntryAtLayerHeight((INT64)(a1 + 4), *a1);
  v4 = result;
  if( *((_DWORD *)result + 2) == -1 )
  {
    if( result[2] )
      (*(void(__fastcall **)(_QWORD, _QWORD *))(*result + 16i64))(*result, result + 3);
    *v4 = 0i64;
    *(_QWORD *)((char *)v4 + 12) = 0i64;
    *((_DWORD *)v4 + 5) = 0;
    *((_DWORD *)v4 + 2) = -1;
    v4[3] = 0i64;
    *((_DWORD *)v4 + 6) = -1;
    *((_WORD *)v4 + 14) = 0;
    v5 = *(_QWORD *)EntryAtLayerHeight;
    v6 = *(_DWORD *)(EntryAtLayerHeight + 112);
    *v4 = *(_QWORD *)EntryAtLayerHeight;
    *((_DWORD *)v4 + 2) = v6;
    result = (_QWORD *)(*(__int64(**)(void))(v5 + 8))();
    v4[2] = result;
  }
  return result;
}

Referenced by:

CmpPartialPromoteSubkeys
CmpPromoteSubtree