CmpBindHiveToTrans

UINT64 __stdcall CmpBindHiveToTrans(_CMHIVE *CmHive, _CM_TRANS *CmTrans){
  int v2; 
  __int64 HiveCount; 

  v2 = 0;
  if( (CmTrans->TransState & 0x80u) == 0 )
  {
    if( CmHive )
    {
      HiveCount = CmTrans->HiveCount;
      if( (_DWORD)HiveCount )
      {
        while( CmHive != CmTrans->HiveArray[v2] )
        {
          if( ++v2 >= (unsigned int)HiveCount )
            goto LABEL_7;
        }
      }
      else
      {
LABEL_7:
        CmTrans->HiveArray[HiveCount] = CmHive;
        ++CmTrans->HiveCount;
      }
    }
    return 1i64;
  }
  if( !CmTrans->HiveCount )
  {
    CmTrans->HiveArray[0] = CmHive;
    return 1i64;
  }
  return CmTrans->HiveArray[0] == CmHive;
}

Referenced by:

CmpTransAllocateTrans
CmpTransSearchAddLightWeightTrans
CmpTransSearchAddTrans