ClockTimeoutExpired (uint32 * startTimeInOut, uint32 * elapsedTimeInOut, uint32 TimeoutTicks)
{
  boolean D.5258;
  long unsigned int D.5257;

  <bb 2> :
  # DEBUG BEGIN_STMT
  D.5257 = OsIf_GetElapsed (startTimeInOut, 0);
  _1 = *elapsedTimeInOut;
  _2 = D.5257 + _1;
  *elapsedTimeInOut = _2;
  # DEBUG BEGIN_STMT
  _3 = *elapsedTimeInOut;
  D.5258 = TimeoutTicks <= _3;
  return D.5258;

}


ClockStartTimeout (uint32 * startTimeOut, uint32 * elapsedTimeOut, uint32 * timeoutTicksOut, uint32 timeoutUs)
{
  <bb 2> :
  # DEBUG BEGIN_STMT
  _1 = OsIf_GetCounter (0);
  *startTimeOut = _1;
  # DEBUG BEGIN_STMT
  *elapsedTimeOut = 0;
  # DEBUG BEGIN_STMT
  _2 = OsIf_MicrosToTicks (timeoutUs, 0);
  *timeoutTicksOut = _2;
  return;

}


ReportClockErrors (Clock_Ip_ClockNotificationType error, Clock_Ip_NameType clockName)
{
  <bb 2> :
  # DEBUG BEGIN_STMT
  clockNotificationsCallback.21_1 = clockNotificationsCallback;
  clockNotificationsCallback.21_1 (error, clockName);
  return;

}


ClockNotificatonsEmptyCallback (Clock_Ip_ClockNotificationType notification, Clock_Ip_NameType clockName)
{
  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  return;

}


Clock_Ip_TimeDelay ()
{
  <bb 2> :
  # DEBUG BEGIN_STMT
  ClockCalcFreqCallIdx.17_1 = ClockCalcFreqCallIdx;
  _2 = (int) ClockCalcFreqCallIdx.17_1;
  _3 = calcFreqCallbacks[_2];
  _3 ();
  # DEBUG BEGIN_STMT
  ClockCalcFreqCallIdx.18_4 = ClockCalcFreqCallIdx;
  if (ClockCalcFreqCallIdx.18_4 <= 33)
    goto <bb 3>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  ClockCalcFreqCallIdx.19_5 = ClockCalcFreqCallIdx;
  ClockCalcFreqCallIdx.20_6 = ClockCalcFreqCallIdx.19_5;
  _7 = ClockCalcFreqCallIdx.20_6 + 1;
  ClockCalcFreqCallIdx = _7;

  <bb 4> :
  return;

}


Clock_Ip_Sleep ()
{
  <bb 2> :
  # DEBUG BEGIN_STMT
  goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  ClockCalcFreqCallIdx.3_1 = ClockCalcFreqCallIdx;
  _2 = (int) ClockCalcFreqCallIdx.3_1;
  _3 = calcFreqCallbacks[_2];
  _3 ();
  # DEBUG BEGIN_STMT
  ClockCalcFreqCallIdx.4_4 = ClockCalcFreqCallIdx;
  ClockCalcFreqCallIdx.5_5 = ClockCalcFreqCallIdx.4_4;
  _6 = ClockCalcFreqCallIdx.5_5 + 1;
  ClockCalcFreqCallIdx = _6;

  <bb 4> :
  # DEBUG BEGIN_STMT
  ClockCalcFreqCallIdx.6_7 = ClockCalcFreqCallIdx;
  if (ClockCalcFreqCallIdx.6_7 <= 33)
    goto <bb 3>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 5> :
  return;

}


Clock_Ip_GetClockFrequency (Clock_Ip_NameType clockName)
{
  uint32 frequency;
  uint32 D.5253;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  if (clockName > 21)
    goto <bb 3>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  _1 = (long unsigned int) clockName;
  _2 = _1 + 4294967274;
  _3 = consumerClockCallbacks[_2];
  frequency = _3 ();
  goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  frequency = GetProducerClockFreq (clockName);

  <bb 5> :
  # DEBUG BEGIN_STMT
  D.5253 = frequency;
  return D.5253;

}


Clock_Ip_EnableModuleClock (Clock_Ip_NameType clockName)
{
  uint32 callbackIndex;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = (int) clockName;
  _2 = clockFeatures[_1][1];
  _3 = (int) _2;
  _4 = gateCallbackIndex[_3];
  callbackIndex = (uint32) _4;
  # DEBUG BEGIN_STMT
  _5 = gateCallbacks[callbackIndex].Update;
  _5 (clockName, 0);
  return;

}


Clock_Ip_DisableModuleClock (Clock_Ip_NameType clockName)
{
  uint32 callbackIndex;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = (int) clockName;
  _2 = clockFeatures[_1][1];
  _3 = (int) _2;
  _4 = gateCallbackIndex[_3];
  callbackIndex = (uint32) _4;
  # DEBUG BEGIN_STMT
  _5 = gateCallbacks[callbackIndex].Update;
  _5 (clockName, 1);
  return;

}


Clock_Ip_InstallNotificationsCallback (void (*Clock_Ip_NotificationsCallbackType) (Clock_Ip_ClockNotificationType, Clock_Ip_NameType) callback)
{
  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  clockNotificationsCallback = callback;
  return;

}


Clock_Ip_PowerModeChangeNotification (power_modes_t powerMode, power_notification_t notification)
{
  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  UpdateFrequencies (powerMode);
  return;

}


Clock_Ip_ClearClockMonitorStatus (Clock_Ip_NameType clockName)
{
  uint32 callbackIndex;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = (int) clockName;
  _2 = clockFeatures[_1][1];
  _3 = (int) _2;
  _4 = cmuCallbackIndex[_3];
  callbackIndex = (uint32) _4;
  # DEBUG BEGIN_STMT
  _5 = cmuCallbacks[callbackIndex].Clear;
  _5 (clockName);
  return;

}


Clock_Ip_GetClockMonitorStatus (Clock_Ip_NameType clockName)
{
  uint32 callbackIndex;
  Clock_Ip_CmuStatusType D.5248;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = (int) clockName;
  _2 = clockFeatures[_1][1];
  _3 = (int) _2;
  _4 = cmuCallbackIndex[_3];
  callbackIndex = (uint32) _4;
  # DEBUG BEGIN_STMT
  _5 = cmuCallbacks[callbackIndex].GetStatus;
  D.5248 = _5 (clockName);
  return D.5248;

}


Clock_Ip_DisableClockMonitor (Clock_Ip_NameType clockName)
{
  uint32 callbackIndex;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = (int) clockName;
  _2 = clockFeatures[_1][1];
  _3 = (int) _2;
  _4 = cmuCallbackIndex[_3];
  callbackIndex = (uint32) _4;
  # DEBUG BEGIN_STMT
  _5 = cmuCallbacks[callbackIndex].Disable;
  _5 (clockName);
  return;

}


Clock_Ip_DistributePll ()
{
  uint32 callbackIndex;
  uint32 i;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  clockConfig.7_1 = clockConfig;
  if (clockConfig.7_1 != 0B)
    goto <bb 3>; [INV]
  else
    goto <bb 12>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 7>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  clockConfig.8_2 = clockConfig;
  _3 = clockConfig.8_2->selectors[i].value;
  _4 = (int) _3;
  _5 = clockName_sourceType[_4];
  if (_5 != 1)
    goto <bb 5>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  clockConfig.9_6 = clockConfig;
  _7 = clockConfig.9_6->selectors[i].name;
  _8 = (int) _7;
  _9 = clockFeatures[_8][1];
  _10 = (int) _9;
  _11 = selectorCallbackIndex[_10];
  callbackIndex = (uint32) _11;
  # DEBUG BEGIN_STMT
  _12 = selectorCallbacks[callbackIndex].Set;
  clockConfig.10_13 = clockConfig;
  _14 = &clockConfig.10_13->selectors[i];
  _12 (_14);

  <bb 6> :
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 7> :
  # DEBUG BEGIN_STMT
  clockConfig.11_15 = clockConfig;
  _16 = clockConfig.11_15->selectorsCount;
  _17 = (long unsigned int) _16;
  if (i < _17)
    goto <bb 4>; [INV]
  else
    goto <bb 8>; [INV]

  <bb 8> :
  # DEBUG BEGIN_STMT
  clockTreeIsConsumingPll.12_18 = clockTreeIsConsumingPll;
  if (clockTreeIsConsumingPll.12_18 != 0)
    goto <bb 9>; [INV]
  else
    goto <bb 12>; [INV]

  <bb 9> :
  # DEBUG BEGIN_STMT
  clockConfig.13_19 = clockConfig;
  _20 = &clockConfig.13_19->specificPeriphalConfiguration;
  SpecificPeripheralClockInitialization (_20);
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 11>; [INV]

  <bb 10> :
  # DEBUG BEGIN_STMT
  clockConfig.14_21 = clockConfig;
  _22 = clockConfig.14_21->cmus[i].name;
  _23 = (int) _22;
  _24 = clockFeatures[_23][1];
  _25 = (int) _24;
  _26 = cmuCallbackIndex[_25];
  callbackIndex = (uint32) _26;
  # DEBUG BEGIN_STMT
  _27 = cmuCallbacks[callbackIndex].Set;
  clockConfig.15_28 = clockConfig;
  _29 = &clockConfig.15_28->cmus[i];
  _27 (_29);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 11> :
  # DEBUG BEGIN_STMT
  clockConfig.16_30 = clockConfig;
  _31 = clockConfig.16_30->cmusCount;
  _32 = (long unsigned int) _31;
  if (i < _32)
    goto <bb 10>; [INV]
  else
    goto <bb 12>; [INV]

  <bb 12> :
  # DEBUG BEGIN_STMT
  UpdateFrequencies (0);
  return;

}


Clock_Ip_GetPllStatus ()
{
  uint32 callbackIndex;
  uint32 i;
  clock_pll_status_t pllStatus;
  Clock_Ip_PllStatusType retValue;
  Clock_Ip_PllStatusType D.5240;

  <bb 2> :
  # DEBUG BEGIN_STMT
  retValue = 2;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 8>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  _1 = HwPllName[i];
  _2 = (int) _1;
  _3 = clockFeatures[_2][1];
  _4 = (int) _3;
  _5 = pllCallbackIndex[_4];
  callbackIndex = (uint32) _5;
  # DEBUG BEGIN_STMT
  _6 = pllCallbacks[callbackIndex].Complete;
  _7 = HwPllName[i];
  pllStatus = _6 (_7);
  # DEBUG BEGIN_STMT
  if (pllStatus == 1)
    goto <bb 4>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  retValue = 1;
  # DEBUG BEGIN_STMT
  goto <bb 9>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  if (pllStatus == 2)
    goto <bb 6>; [INV]
  else
    goto <bb 7>; [INV]

  <bb 6> :
  # DEBUG BEGIN_STMT
  retValue = 0;

  <bb 7> :
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 8> :
  # DEBUG BEGIN_STMT
  if (i == 0)
    goto <bb 3>; [INV]
  else
    goto <bb 9>; [INV]

  <bb 9> :
  # DEBUG BEGIN_STMT
  D.5240 = retValue;
  return D.5240;

}


Clock_Ip_InitClock (const struct Clock_Ip_ClockConfigType * config)
{
  uint32 i;
  uint32 callbackIndex;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  ClockCalcFreqCallIdx = 0;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  clockConfig.1_1 = clockConfig;
  if (clockConfig.1_1 != 0B)
    goto <bb 3>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  _2 = config->cmus[i].name;
  _3 = (int) _2;
  _4 = clockFeatures[_3][1];
  _5 = (int) _4;
  _6 = cmuCallbackIndex[_5];
  callbackIndex = (uint32) _6;
  # DEBUG BEGIN_STMT
  _7 = cmuCallbacks[callbackIndex].Reset;
  _8 = &config->cmus[i];
  _7 (_8);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 5> :
  # DEBUG BEGIN_STMT
  _9 = config->cmusCount;
  _10 = (long unsigned int) _9;
  if (i < _10)
    goto <bb 4>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 6> :
  # DEBUG BEGIN_STMT
  clockConfig = config;
  # DEBUG BEGIN_STMT
  SpecificPlatformInitClock (config);
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 8>; [INV]

  <bb 7> :
  # DEBUG BEGIN_STMT
  _11 = config->selectors[i].name;
  _12 = (int) _11;
  _13 = clockFeatures[_12][1];
  _14 = (int) _13;
  _15 = selectorCallbackIndex[_14];
  callbackIndex = (uint32) _15;
  # DEBUG BEGIN_STMT
  _16 = selectorCallbacks[callbackIndex].Reset;
  _17 = &config->selectors[i];
  _16 (_17);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 8> :
  # DEBUG BEGIN_STMT
  _18 = config->selectorsCount;
  _19 = (long unsigned int) _18;
  if (i < _19)
    goto <bb 7>; [INV]
  else
    goto <bb 9>; [INV]

  <bb 9> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 11>; [INV]

  <bb 10> :
  # DEBUG BEGIN_STMT
  _20 = config->fracDivs[i].name;
  _21 = (int) _20;
  _22 = clockFeatures[_21][1];
  _23 = (int) _22;
  _24 = fractional_dividerCallbackIndex[_23];
  callbackIndex = (uint32) _24;
  # DEBUG BEGIN_STMT
  _25 = fracDivCallbacks[callbackIndex].Reset;
  _26 = &config->fracDivs[i];
  _25 (_26);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 11> :
  # DEBUG BEGIN_STMT
  _27 = config->fracDivsCount;
  _28 = (long unsigned int) _27;
  if (i < _28)
    goto <bb 10>; [INV]
  else
    goto <bb 12>; [INV]

  <bb 12> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 14>; [INV]

  <bb 13> :
  # DEBUG BEGIN_STMT
  _29 = config->plls[i].name;
  _30 = (int) _29;
  _31 = clockFeatures[_30][1];
  _32 = (int) _31;
  _33 = pllCallbackIndex[_32];
  callbackIndex = (uint32) _33;
  # DEBUG BEGIN_STMT
  _34 = pllCallbacks[callbackIndex].Reset;
  _35 = &config->plls[i];
  _34 (_35);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 14> :
  # DEBUG BEGIN_STMT
  _36 = config->pllsCount;
  _37 = (long unsigned int) _36;
  if (i < _37)
    goto <bb 13>; [INV]
  else
    goto <bb 15>; [INV]

  <bb 15> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 17>; [INV]

  <bb 16> :
  # DEBUG BEGIN_STMT
  _38 = config->xoscs[i].name;
  _39 = (int) _38;
  _40 = clockFeatures[_39][1];
  _41 = (int) _40;
  _42 = xoscCallbackIndex[_41];
  callbackIndex = (uint32) _42;
  # DEBUG BEGIN_STMT
  _43 = extOscCallbacks[callbackIndex].Reset;
  _44 = &config->xoscs[i];
  _43 (_44);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 17> :
  # DEBUG BEGIN_STMT
  _45 = config->xoscsCount;
  _46 = (long unsigned int) _45;
  if (i < _46)
    goto <bb 16>; [INV]
  else
    goto <bb 18>; [INV]

  <bb 18> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 20>; [INV]

  <bb 19> :
  # DEBUG BEGIN_STMT
  _47 = config->ircoscs[i].name;
  _48 = (int) _47;
  _49 = clockFeatures[_48][1];
  _50 = (int) _49;
  _51 = ircoscCallbackIndex[_50];
  callbackIndex = (uint32) _51;
  # DEBUG BEGIN_STMT
  _52 = intOscCallbacks[callbackIndex].Set;
  _53 = &config->ircoscs[i];
  _52 (_53);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 20> :
  # DEBUG BEGIN_STMT
  _54 = config->ircoscsCount;
  _55 = (long unsigned int) _54;
  if (i < _55)
    goto <bb 19>; [INV]
  else
    goto <bb 21>; [INV]

  <bb 21> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 23>; [INV]

  <bb 22> :
  # DEBUG BEGIN_STMT
  _56 = config->xoscs[i].name;
  _57 = (int) _56;
  _58 = clockFeatures[_57][1];
  _59 = (int) _58;
  _60 = xoscCallbackIndex[_59];
  callbackIndex = (uint32) _60;
  # DEBUG BEGIN_STMT
  _61 = extOscCallbacks[callbackIndex].Set;
  _62 = &config->xoscs[i];
  _61 (_62);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 23> :
  # DEBUG BEGIN_STMT
  _63 = config->xoscsCount;
  _64 = (long unsigned int) _63;
  if (i < _64)
    goto <bb 22>; [INV]
  else
    goto <bb 24>; [INV]

  <bb 24> :
  # DEBUG BEGIN_STMT
  Clock_Ip_Sleep ();
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 26>; [INV]

  <bb 25> :
  # DEBUG BEGIN_STMT
  _65 = config->pcfs[i].name;
  _66 = (int) _65;
  _67 = clockFeatures[_66][1];
  _68 = (int) _67;
  _69 = pcfsCallbackIndex[_68];
  callbackIndex = (uint32) _69;
  # DEBUG BEGIN_STMT
  _70 = pcfsCallbacks[callbackIndex].Set;
  _71 = &config->pcfs[i];
  _70 (_71);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 26> :
  # DEBUG BEGIN_STMT
  _72 = config->pcfsCount;
  _73 = (long unsigned int) _72;
  if (i < _73)
    goto <bb 25>; [INV]
  else
    goto <bb 27>; [INV]

  <bb 27> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 29>; [INV]

  <bb 28> :
  # DEBUG BEGIN_STMT
  _74 = config->dividerTriggers[i].name;
  _75 = (int) _74;
  _76 = clockFeatures[_75][1];
  _77 = (int) _76;
  _78 = dividertriggerCallbackIndex[_77];
  callbackIndex = (uint32) _78;
  # DEBUG BEGIN_STMT
  _79 = dividerTriggerCallbacks[callbackIndex].Configure;
  _80 = &config->dividerTriggers[i];
  _79 (_80);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 29> :
  # DEBUG BEGIN_STMT
  _81 = config->dividerTriggersCount;
  _82 = (long unsigned int) _81;
  if (i < _82)
    goto <bb 28>; [INV]
  else
    goto <bb 30>; [INV]

  <bb 30> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 32>; [INV]

  <bb 31> :
  # DEBUG BEGIN_STMT
  _83 = config->dividers[i].name;
  _84 = (int) _83;
  _85 = clockFeatures[_84][1];
  _86 = (int) _85;
  _87 = dividerCallbackIndex[_86];
  callbackIndex = (uint32) _87;
  # DEBUG BEGIN_STMT
  _88 = dividerCallbacks[callbackIndex].Set;
  _89 = &config->dividers[i];
  _88 (_89);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 32> :
  # DEBUG BEGIN_STMT
  _90 = config->dividersCount;
  _91 = (long unsigned int) _90;
  if (i < _91)
    goto <bb 31>; [INV]
  else
    goto <bb 33>; [INV]

  <bb 33> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 35>; [INV]

  <bb 34> :
  # DEBUG BEGIN_STMT
  _92 = config->dividerTriggers[i].name;
  _93 = (int) _92;
  _94 = clockFeatures[_93][1];
  _95 = (int) _94;
  _96 = dividertriggerCallbackIndex[_95];
  callbackIndex = (uint32) _96;
  # DEBUG BEGIN_STMT
  _97 = dividerTriggerCallbacks[callbackIndex].TriggerUpdate;
  _98 = &config->dividerTriggers[i];
  _97 (_98);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 35> :
  # DEBUG BEGIN_STMT
  _99 = config->dividerTriggersCount;
  _100 = (long unsigned int) _99;
  if (i < _100)
    goto <bb 34>; [INV]
  else
    goto <bb 36>; [INV]

  <bb 36> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 38>; [INV]

  <bb 37> :
  # DEBUG BEGIN_STMT
  _101 = config->plls[i].name;
  _102 = (int) _101;
  _103 = clockFeatures[_102][1];
  _104 = (int) _103;
  _105 = pllCallbackIndex[_104];
  callbackIndex = (uint32) _105;
  # DEBUG BEGIN_STMT
  _106 = pllCallbacks[callbackIndex].Set;
  _107 = &config->plls[i];
  _106 (_107);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 38> :
  # DEBUG BEGIN_STMT
  _108 = config->pllsCount;
  _109 = (long unsigned int) _108;
  if (i < _109)
    goto <bb 37>; [INV]
  else
    goto <bb 39>; [INV]

  <bb 39> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 41>; [INV]

  <bb 40> :
  # DEBUG BEGIN_STMT
  _110 = config->fracDivs[i].name;
  _111 = (int) _110;
  _112 = clockFeatures[_111][1];
  _113 = (int) _112;
  _114 = fractional_dividerCallbackIndex[_113];
  callbackIndex = (uint32) _114;
  # DEBUG BEGIN_STMT
  _115 = fracDivCallbacks[callbackIndex].Set;
  _116 = &config->fracDivs[i];
  _115 (_116);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 41> :
  # DEBUG BEGIN_STMT
  _117 = config->fracDivsCount;
  _118 = (long unsigned int) _117;
  if (i < _118)
    goto <bb 40>; [INV]
  else
    goto <bb 42>; [INV]

  <bb 42> :
  # DEBUG BEGIN_STMT
  clockTreeIsConsumingPll = 0;
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 47>; [INV]

  <bb 43> :
  # DEBUG BEGIN_STMT
  _119 = config->selectors[i].value;
  _120 = (int) _119;
  _121 = clockName_sourceType[_120];
  if (_121 == 1)
    goto <bb 44>; [INV]
  else
    goto <bb 45>; [INV]

  <bb 44> :
  # DEBUG BEGIN_STMT
  _122 = config->selectors[i].name;
  _123 = (int) _122;
  _124 = clockFeatures[_123][1];
  _125 = (int) _124;
  _126 = selectorCallbackIndex[_125];
  callbackIndex = (uint32) _126;
  # DEBUG BEGIN_STMT
  _127 = selectorCallbacks[callbackIndex].Set;
  _128 = &config->selectors[i];
  _127 (_128);
  goto <bb 46>; [INV]

  <bb 45> :
  # DEBUG BEGIN_STMT
  clockTreeIsConsumingPll = 1;

  <bb 46> :
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 47> :
  # DEBUG BEGIN_STMT
  _129 = config->selectorsCount;
  _130 = (long unsigned int) _129;
  if (i < _130)
    goto <bb 43>; [INV]
  else
    goto <bb 48>; [INV]

  <bb 48> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 50>; [INV]

  <bb 49> :
  # DEBUG BEGIN_STMT
  _131 = config->gates[i].name;
  _132 = (int) _131;
  _133 = clockFeatures[_132][1];
  _134 = (int) _133;
  _135 = gateCallbackIndex[_134];
  callbackIndex = (uint32) _135;
  # DEBUG BEGIN_STMT
  _136 = gateCallbacks[callbackIndex].Set;
  _137 = &config->gates[i];
  _136 (_137);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 50> :
  # DEBUG BEGIN_STMT
  _138 = config->gatesCount;
  _139 = (long unsigned int) _138;
  if (i < _139)
    goto <bb 49>; [INV]
  else
    goto <bb 51>; [INV]

  <bb 51> :
  # DEBUG BEGIN_STMT
  clockTreeIsConsumingPll.2_140 = clockTreeIsConsumingPll;
  _141 = ~clockTreeIsConsumingPll.2_140;
  if (_141 != 0)
    goto <bb 52>; [INV]
  else
    goto <bb 55>; [INV]

  <bb 52> :
  # DEBUG BEGIN_STMT
  _142 = &config->specificPeriphalConfiguration;
  SpecificPeripheralClockInitialization (_142);
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 54>; [INV]

  <bb 53> :
  # DEBUG BEGIN_STMT
  _143 = config->cmus[i].name;
  _144 = (int) _143;
  _145 = clockFeatures[_144][1];
  _146 = (int) _145;
  _147 = cmuCallbackIndex[_146];
  callbackIndex = (uint32) _147;
  # DEBUG BEGIN_STMT
  _148 = cmuCallbacks[callbackIndex].Set;
  _149 = &config->cmus[i];
  _148 (_149);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 54> :
  # DEBUG BEGIN_STMT
  _150 = config->cmusCount;
  _151 = (long unsigned int) _150;
  if (i < _151)
    goto <bb 53>; [INV]
  else
    goto <bb 55>; [INV]

  <bb 55> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  UpdateFrequencies (0);
  return;

}


Clock_Ip_Init (const struct Clock_Ip_ClockConfigType * config)
{
  Clock_Ip_PllStatusType pllStatus;
  Clock_Ip_StatusType clockStatus;
  Clock_Ip_StatusType D.5226;

  <bb 2> :
  # DEBUG BEGIN_STMT
  clockStatus = 1;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  Clock_Ip_InitClock (config);
  # DEBUG BEGIN_STMT
  clockTreeIsConsumingPll.0_1 = clockTreeIsConsumingPll;
  if (clockTreeIsConsumingPll.0_1 != 0)
    goto <bb 3>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  pllStatus = Clock_Ip_GetPllStatus ();
  # DEBUG BEGIN_STMT
  if (pllStatus == 0)
    goto <bb 4>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  Clock_Ip_DistributePll ();
  # DEBUG BEGIN_STMT
  clockStatus = 0;
  goto <bb 6>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  clockStatus = 0;

  <bb 6> :
  # DEBUG BEGIN_STMT
  D.5226 = clockStatus;
  return D.5226;

}


