Symbol table:

Power_Ip_CM4_EnableSleepOnExit/5 (Power_Ip_CM4_EnableSleepOnExit) @06b1d1c0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags:
  Called by: Power_Ip_SMC_ModeConfig/2 Power_Ip_SMC_ModeConfig/2 Power_Ip_SMC_ModeConfig/2 
  Calls: 
PowerTimeoutExpired/4 (PowerTimeoutExpired) @06b1d0e0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags:
  Called by: Power_Ip_SMC_ModeConfig/2 Power_Ip_SMC_ModeConfig/2 Power_Ip_SMC_ModeConfig/2 
  Calls: 
PowerStartTimeout/3 (PowerStartTimeout) @06b1d000
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags:
  Called by: Power_Ip_SMC_ModeConfig/2 Power_Ip_SMC_ModeConfig/2 Power_Ip_SMC_ModeConfig/2 
  Calls: 
Power_Ip_SMC_ModeConfig/2 (Power_Ip_SMC_ModeConfig) @06afc9a0
  Type: function definition analyzed
  Visibility: force_output externally_visible no_reorder public
  References: 
  Referring: 
  Availability: available
  Function flags: body
  Called by: 
  Calls: Power_Ip_CM4_EnableSleepOnExit/5 Power_Ip_CM4_EnableSleepOnExit/5 Power_Ip_CM4_EnableSleepOnExit/5 PowerTimeoutExpired/4 PowerStartTimeout/3 PowerTimeoutExpired/4 PowerStartTimeout/3 PowerTimeoutExpired/4 PowerStartTimeout/3 
Power_Ip_SMC_ModeCheckEntry/1 (Power_Ip_SMC_ModeCheckEntry) @06afc460
  Type: function definition analyzed
  Visibility: force_output externally_visible no_reorder public
  References: 
  Referring: 
  Availability: available
  Function flags: body
  Called by: 
  Calls: 
Power_Ip_SMC_AllowedModesConfig/0 (Power_Ip_SMC_AllowedModesConfig) @06afc1c0
  Type: function definition analyzed
  Visibility: force_output externally_visible no_reorder public
  References: 
  Referring: 
  Availability: available
  Function flags: body
  Called by: 
  Calls: 
Power_Ip_SMC_ModeConfig (const struct Power_Ip_ModeConfigType * pModeConfigPtr)
{
  boolean TimeoutOccurred;
  uint32 TimeoutTicks;
  uint32 ElapsedTime;
  uint32 StartTime;
  uint32 u32RegValue;
  uint32 u32PowerModeStatus;
  uint32 u32TempValue;
  Power_Ip_PowerModeType ePowerMode;
  uint32 ePowerSwitchMode;
  uint32 D.5748;
  struct SMC_Type * _1;
  struct SMC_Type * _2;
  long unsigned int TimeoutTicks.0_3;
  struct SMC_Type * _4;
  long unsigned int _5;
  _Bool _6;
  struct SMC_Type * _7;
  struct SMC_Type * _8;
  long unsigned int TimeoutTicks.1_9;
  struct SMC_Type * _10;
  long unsigned int _11;
  _Bool _12;
  struct SMC_Type * _13;
  struct SMC_Type * _14;
  long unsigned int TimeoutTicks.2_15;
  struct SMC_Type * _16;
  long unsigned int _17;
  _Bool _18;
  struct SMC_Type * _19;
  struct SMC_Type * _20;
  struct SMC_Type * _21;
  unsigned char _22;
  struct SMC_Type * _23;
  struct SMC_Type * _24;
  struct SMC_Type * _25;
  struct SMC_Type * _26;
  unsigned char _27;
  struct SMC_Type * _28;
  struct SMC_Type * _29;
  struct SMC_Type * _30;
  struct SMC_Type * _31;
  unsigned char _32;
  uint32 _108;

  <bb 2> :
  ePowerSwitchMode_44 = 0;
  ePowerMode_45 = 0;
  u32RegValue_46 = 0;
  TimeoutOccurred_47 = 0;
  ePowerMode_50 = pModeConfigPtr_49(D)->Power_Ip_ePowerMode;
  switch (ePowerMode_50) <default: <L27> [INV], case 0: <L0> [INV], case 1: <L6> [INV], case 2: <L12> [INV], case 3: <L18> [INV], case 4: <L21> [INV], case 5: <L24> [INV]>

  <bb 3> :
<L0>:
  _1 = 1074257920B;
  u32TempValue_98 ={v} _1->PMCTRL;
  u32TempValue_99 = u32TempValue_98 & 4294967199;
  u32TempValue_100 = u32TempValue_99;
  _2 = 1074257920B;
  _2->PMCTRL ={v} u32TempValue_100;
  PowerStartTimeout (&StartTime, &ElapsedTime, &TimeoutTicks, 50000);

  <bb 4> :
  TimeoutTicks.0_3 = TimeoutTicks;
  TimeoutOccurred_104 = PowerTimeoutExpired (&StartTime, &ElapsedTime, TimeoutTicks.0_3);
  _4 = 1074257920B;
  _5 ={v} _4->PMSTAT;
  u32PowerModeStatus_105 = _5 & 1;
  if (u32PowerModeStatus_105 != 1)
    goto <bb 5>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 5> :
  _6 = ~TimeoutOccurred_104;
  if (_6 != 0)
    goto <bb 4>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 6> :
  if (TimeoutOccurred_104 != 0)
    goto <bb 7>; [INV]
  else
    goto <bb 8>; [INV]

  <bb 7> :
  ePowerSwitchMode_106 = 1;

  <bb 8> :
  # ePowerSwitchMode_33 = PHI <ePowerSwitchMode_44(6), ePowerSwitchMode_106(7)>
  goto <bb 31>; [INV]

  <bb 9> :
<L6>:
  _7 = 1074257920B;
  u32TempValue_89 ={v} _7->PMCTRL;
  u32TempValue_90 = u32TempValue_89 & 4294967199;
  u32TempValue_91 = u32TempValue_90 | 96;
  _8 = 1074257920B;
  _8->PMCTRL ={v} u32TempValue_91;
  PowerStartTimeout (&StartTime, &ElapsedTime, &TimeoutTicks, 50000);

  <bb 10> :
  TimeoutTicks.1_9 = TimeoutTicks;
  TimeoutOccurred_95 = PowerTimeoutExpired (&StartTime, &ElapsedTime, TimeoutTicks.1_9);
  _10 = 1074257920B;
  _11 ={v} _10->PMSTAT;
  u32PowerModeStatus_96 = _11 & 128;
  if (u32PowerModeStatus_96 != 128)
    goto <bb 11>; [INV]
  else
    goto <bb 12>; [INV]

  <bb 11> :
  _12 = ~TimeoutOccurred_95;
  if (_12 != 0)
    goto <bb 10>; [INV]
  else
    goto <bb 12>; [INV]

  <bb 12> :
  if (TimeoutOccurred_95 != 0)
    goto <bb 13>; [INV]
  else
    goto <bb 14>; [INV]

  <bb 13> :
  ePowerSwitchMode_97 = 1;

  <bb 14> :
  # ePowerSwitchMode_34 = PHI <ePowerSwitchMode_44(12), ePowerSwitchMode_97(13)>
  goto <bb 31>; [INV]

  <bb 15> :
<L12>:
  _13 = 1074257920B;
  u32TempValue_80 ={v} _13->PMCTRL;
  u32TempValue_81 = u32TempValue_80 & 4294967199;
  u32TempValue_82 = u32TempValue_81 | 64;
  _14 = 1074257920B;
  _14->PMCTRL ={v} u32TempValue_82;
  PowerStartTimeout (&StartTime, &ElapsedTime, &TimeoutTicks, 50000);

  <bb 16> :
  TimeoutTicks.2_15 = TimeoutTicks;
  TimeoutOccurred_86 = PowerTimeoutExpired (&StartTime, &ElapsedTime, TimeoutTicks.2_15);
  _16 = 1074257920B;
  _17 ={v} _16->PMSTAT;
  u32PowerModeStatus_87 = _17 & 4;
  if (u32PowerModeStatus_87 != 4)
    goto <bb 17>; [INV]
  else
    goto <bb 18>; [INV]

  <bb 17> :
  _18 = ~TimeoutOccurred_86;
  if (_18 != 0)
    goto <bb 16>; [INV]
  else
    goto <bb 18>; [INV]

  <bb 18> :
  if (TimeoutOccurred_86 != 0)
    goto <bb 19>; [INV]
  else
    goto <bb 20>; [INV]

  <bb 19> :
  ePowerSwitchMode_88 = 1;

  <bb 20> :
  # ePowerSwitchMode_35 = PHI <ePowerSwitchMode_44(18), ePowerSwitchMode_88(19)>
  goto <bb 31>; [INV]

  <bb 21> :
<L18>:
  _19 = 1074257920B;
  u32TempValue_71 ={v} _19->PMCTRL;
  u32TempValue_72 = u32TempValue_71 & 4294967288;
  u32TempValue_73 = u32TempValue_72 | 2;
  _20 = 1074257920B;
  _20->PMCTRL ={v} u32TempValue_73;
  _21 = 1074257920B;
  u32RegValue_75 ={v} _21->PMCTRL;
  _22 = pModeConfigPtr_49(D)->Power_Ip_SleepOnExit;
  if (_22 != 0)
    goto <bb 22>; [INV]
  else
    goto <bb 23>; [INV]

  <bb 22> :
  Power_Ip_CM4_EnableSleepOnExit ();

  <bb 23> :
  __asm__ __volatile__(" cpsie i");
  __asm__ __volatile__("  wfi");
  __asm__ __volatile__(" cpsid i");
  goto <bb 31>; [INV]

  <bb 24> :
<L21>:
  _23 = 1074257920B;
  _23->STOPCTRL ={v} 64;
  _24 = 1074257920B;
  u32TempValue_62 ={v} _24->PMCTRL;
  u32TempValue_63 = u32TempValue_62 & 4294967288;
  u32TempValue_64 = u32TempValue_63;
  _25 = 1074257920B;
  _25->PMCTRL ={v} u32TempValue_64;
  _26 = 1074257920B;
  u32RegValue_66 ={v} _26->STOPCTRL;
  _27 = pModeConfigPtr_49(D)->Power_Ip_SleepOnExit;
  if (_27 != 0)
    goto <bb 25>; [INV]
  else
    goto <bb 26>; [INV]

  <bb 25> :
  Power_Ip_CM4_EnableSleepOnExit ();

  <bb 26> :
  __asm__ __volatile__(" cpsie i");
  __asm__ __volatile__("  wfi");
  __asm__ __volatile__(" cpsid i");
  goto <bb 31>; [INV]

  <bb 27> :
<L24>:
  _28 = 1074257920B;
  _28->STOPCTRL ={v} 128;
  _29 = 1074257920B;
  u32TempValue_52 ={v} _29->PMCTRL;
  u32TempValue_53 = u32TempValue_52 & 4294967288;
  u32TempValue_54 = u32TempValue_53;
  _30 = 1074257920B;
  _30->PMCTRL ={v} u32TempValue_54;
  _31 = 1074257920B;
  u32RegValue_56 ={v} _31->STOPCTRL;
  _32 = pModeConfigPtr_49(D)->Power_Ip_SleepOnExit;
  if (_32 != 0)
    goto <bb 28>; [INV]
  else
    goto <bb 29>; [INV]

  <bb 28> :
  Power_Ip_CM4_EnableSleepOnExit ();

  <bb 29> :
  __asm__ __volatile__(" cpsie i");
  __asm__ __volatile__("  wfi");
  __asm__ __volatile__(" cpsid i");
  goto <bb 31>; [INV]

  <bb 30> :
<L27>:
  ePowerSwitchMode_107 = 1;

  <bb 31> :
  # ePowerSwitchMode_36 = PHI <ePowerSwitchMode_33(8), ePowerSwitchMode_34(14), ePowerSwitchMode_35(20), ePowerSwitchMode_44(23), ePowerSwitchMode_44(26), ePowerSwitchMode_44(29), ePowerSwitchMode_107(30)>
  _108 = ePowerSwitchMode_36;
  StartTime ={v} {CLOBBER};
  ElapsedTime ={v} {CLOBBER};
  TimeoutTicks ={v} {CLOBBER};

  <bb 32> :
<L30>:
  return _108;

}


Power_Ip_SMC_ModeCheckEntry (Power_Ip_PowerModeType ePowerMode)
{
  uint32 eCurrentPowerMode;
  Power_Ip_SMC_ModeStatusType ePowerModeCheck;
  Power_Ip_SMC_ModeStatusType D.5731;
  struct SMC_Type * _1;
  long unsigned int _2;
  Power_Ip_SMC_ModeStatusType _20;

  <bb 2> :
  ePowerModeCheck_9 = 1;
  eCurrentPowerMode_10 = 1;
  _1 = 1074257920B;
  _2 ={v} _1->PMSTAT;
  eCurrentPowerMode_12 = _2 & 255;
  switch (ePowerMode_13(D)) <default: <L18> [INV], case 0: <L0> [INV], case 1: <L1> [INV], case 2: <L4> [INV], case 3: <L8> [INV], case 4: <L12> [INV], case 5: <L15> [INV]>

  <bb 3> :
<L0>:
  ePowerModeCheck_19 = 0;
  goto <bb 22>; [INV]

  <bb 4> :
<L1>:
  if (eCurrentPowerMode_12 == 1)
    goto <bb 5>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 5> :
  ePowerModeCheck_18 = 0;

  <bb 6> :
  # ePowerModeCheck_3 = PHI <ePowerModeCheck_9(4), ePowerModeCheck_18(5)>
  goto <bb 22>; [INV]

  <bb 7> :
<L4>:
  if (eCurrentPowerMode_12 == 1)
    goto <bb 9>; [INV]
  else
    goto <bb 8>; [INV]

  <bb 8> :
  if (eCurrentPowerMode_12 == 16)
    goto <bb 9>; [INV]
  else
    goto <bb 10>; [INV]

  <bb 9> :
  ePowerModeCheck_17 = 0;

  <bb 10> :
  # ePowerModeCheck_4 = PHI <ePowerModeCheck_9(8), ePowerModeCheck_17(9)>
  goto <bb 22>; [INV]

  <bb 11> :
<L8>:
  if (eCurrentPowerMode_12 == 1)
    goto <bb 13>; [INV]
  else
    goto <bb 12>; [INV]

  <bb 12> :
  if (eCurrentPowerMode_12 == 4)
    goto <bb 13>; [INV]
  else
    goto <bb 14>; [INV]

  <bb 13> :
  ePowerModeCheck_16 = 0;

  <bb 14> :
  # ePowerModeCheck_5 = PHI <ePowerModeCheck_9(12), ePowerModeCheck_16(13)>
  goto <bb 22>; [INV]

  <bb 15> :
<L12>:
  if (eCurrentPowerMode_12 == 1)
    goto <bb 16>; [INV]
  else
    goto <bb 17>; [INV]

  <bb 16> :
  ePowerModeCheck_15 = 0;

  <bb 17> :
  # ePowerModeCheck_6 = PHI <ePowerModeCheck_9(15), ePowerModeCheck_15(16)>
  goto <bb 22>; [INV]

  <bb 18> :
<L15>:
  if (eCurrentPowerMode_12 == 1)
    goto <bb 19>; [INV]
  else
    goto <bb 20>; [INV]

  <bb 19> :
  ePowerModeCheck_14 = 0;

  <bb 20> :
  # ePowerModeCheck_7 = PHI <ePowerModeCheck_9(18), ePowerModeCheck_14(19)>
  goto <bb 22>; [INV]

  <bb 21> :
<L18>:

  <bb 22> :
  # ePowerModeCheck_8 = PHI <ePowerModeCheck_19(3), ePowerModeCheck_3(6), ePowerModeCheck_4(10), ePowerModeCheck_5(14), ePowerModeCheck_6(17), ePowerModeCheck_7(20), ePowerModeCheck_9(21)>
  _20 = ePowerModeCheck_8;

  <bb 23> :
<L20>:
  return _20;

}


Power_Ip_SMC_AllowedModesConfig (const struct Power_Ip_SMC_ConfigType * pConfigPtr)
{
  long unsigned int _1;
  struct SMC_Type * _2;
  long unsigned int _3;

  <bb 2> :
  _1 = pConfigPtr_5(D)->u32AllowedModes;
  _2 = 1074257920B;
  _3 = _1 & 160;
  _2->PMPROT ={v} _3;
  return;

}


