CmpGetCorrectKcbLockOrder

void __fastcall CmpGetCorrectKcbLockOrder(
        _CM_KEY_CONTROL_BLOCK *Kcb1,
        _CM_KEY_CONTROL_BLOCK *Kcb2,
        _CM_KEY_CONTROL_BLOCK **ProperFirstKcb,
        _CM_KEY_CONTROL_BLOCK **ProperSecondKcb){
  unsigned __int32 v5; 
  unsigned __int32 v6; 
  _CM_KEY_CONTROL_BLOCK *v7; 
  __int16 bf_b8_high; 
  __int16 LayerHeight; 

  v5 = ((unsigned __int32)Kcb1->_bf_8 >> 21) & 0x3FF;
  v6 = ((unsigned __int32)Kcb2->_bf_8 >> 21) & 0x3FF;
  if( v5 <= v6
    && (v5 < v6
     || ((bf_b8_high = HIWORD(Kcb1->_bf_b8), (bf_b8_high & 4) == 0) || (Kcb2->_bf_b8 & 0x20000) == 0)
     && ((bf_b8_high & 2) != 0 && (Kcb2->_bf_b8 & 0x40000) != 0
      || (LayerHeight = Kcb1->LayerHeight, LayerHeight <= Kcb2->LayerHeight)
      && (LayerHeight < Kcb2->LayerHeight || Kcb1 <= Kcb2))) )
  {
    v7 = Kcb2;
    Kcb2 = Kcb1;
  }
  else
  {
    v7 = Kcb1;
  }
  *ProperFirstKcb = Kcb2;
  *ProperSecondKcb = v7;
}

Referenced by:

CmpIsKcbLockAllowed
CmpLockTwoKcbsShared
CmpUnlockTwoKcbs