(BraceGroup
  children: [
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:INPUT) op:assign_op.Equal rhs:{<0>} spids:[71])]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {($ Id.VSub_Number '$1')}
                          right: 
                            {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> 
                              <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'>
                            }
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:INPUT)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [99]
                )
              ]
            )
          ]
          spids: [75 95]
        )
      ]
    )
    (C {<.>} {<'/DietPi/dietpi/func/dietpi-globals'>})
    (C {<G_CHECK_ROOT_USER>})
    (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-CPU_info>)})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 20>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {<-e>} 
              {
                (DQ <Id.Lit_BadBackslash '\\'> <'nNotice: CPU information is not available for VM.'> 
                  <Id.Lit_BadBackslash '\\'> <n>
                )
              }
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
          ]
          spids: [137 151]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CPU_GOV_CURRENT)
          op: assign_op.Equal
          rhs: {(SQ <Unknown>)}
          spids: [179]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aCPU_CURRENT_FREQ)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [186]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aCPU_MIN_FREQ)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [190]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aCPU_MAX_FREQ)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [194]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aCPU_SCALINGAVAILABLE_FREQ)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [198]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CPU_SCALINGSUPPORTED)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [202]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_CPU_SCALINGAVAILABLE_FREQ)
          op: assign_op.Equal
          rhs: {(SQ <'/tmp/dietpi-available_cpu_freqs'>)}
          spids: [206]
        )
      ]
    )
    (command.ShFunction
      name: Obtain_Cpu_Freq
      body: 
        (BraceGroup
          children: [
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike i>
                  right: {<Id.Lit_Digits 0>}
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Less
                  left: <Id.Lit_ArithVarLike i>
                  right: 
                    {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<nproc>} {<--all>}))}
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>)
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-f>} 
                                      {<'/sys/devices/system/cpu/cpu'> ($ Id.VSub_DollarName '$i') 
                                        <'/cpufreq/scaling_cur_freq'>
                                      } {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCPU_CURRENT_FREQ
                                      index: {($ Id.VSub_DollarName '$i')}
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (C {<cat>} 
                                            {<'/sys/devices/system/cpu/cpu'> 
                                              ($ Id.VSub_DollarName '$i') <'/cpufreq/scaling_cur_freq'>
                                            }
                                          )
                                      )
                                    }
                                  spids: [263]
                                )
                              ]
                            )
                          ]
                          spids: [246 259]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-f>} 
                                      {<'/sys/devices/system/cpu/cpu'> ($ Id.VSub_DollarName '$i') 
                                        <'/cpufreq/scaling_min_freq'>
                                      } {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCPU_MIN_FREQ
                                      index: {($ Id.VSub_DollarName '$i')}
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (C {<cat>} 
                                            {<'/sys/devices/system/cpu/cpu'> 
                                              ($ Id.VSub_DollarName '$i') <'/cpufreq/scaling_min_freq'>
                                            }
                                          )
                                      )
                                    }
                                  spids: [299]
                                )
                              ]
                            )
                          ]
                          spids: [282 295]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-f>} 
                                      {<'/sys/devices/system/cpu/cpu'> ($ Id.VSub_DollarName '$i') 
                                        <'/cpufreq/scaling_max_freq'>
                                      } {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCPU_MAX_FREQ
                                      index: {($ Id.VSub_DollarName '$i')}
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (C {<cat>} 
                                            {<'/sys/devices/system/cpu/cpu'> 
                                              ($ Id.VSub_DollarName '$i') <'/cpufreq/scaling_max_freq'>
                                            }
                                          )
                                      )
                                    }
                                  spids: [335]
                                )
                              ]
                            )
                          ]
                          spids: [318 331]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} 
                              {
                                <
'/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies'
                                >
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ForExpr
                      init: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: <Id.Lit_ArithVarLike i>
                          right: {<Id.Lit_Digits 0>}
                        )
                      cond: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: <Id.Lit_ArithVarLike i>
                          right: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: (C {<nproc>} {<--all>})
                              )
                            }
                        )
                      update: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: <Id.Lit_ArithVarLike i>
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aCPU_SCALINGAVAILABLE_FREQ
                                      index: {($ Id.VSub_DollarName '$i')}
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<cat>} 
                                                {<'/sys/devices/system/cpu/cpu'> 
                                                  ($ Id.VSub_DollarName '$i') <'/cpufreq/scaling_available_frequencies'>
                                                }
                                              )
                                              (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                                              (C {<sed>} {<-e>} {(SQ <'s/[^0-9]//g'>)})
                                              (C {<sed>} {(SQ <'/^$/d'>)})
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [408]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [366 377]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} 
                              {<'/sys/devices/system/cpu/cpufreq/mp-cpufreq/cpu_freq_table'>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              name: aCPU_SCALINGAVAILABLE_FREQ
                              index: {<Id.Lit_Digits 0>}
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<cat>} 
                                        {
                                          <
'/sys/devices/system/cpu/cpufreq/mp-cpufreq/cpu_freq_table'
                                          >
                                        }
                                      )
                                      (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                                      (C {<sed>} {<-e>} {(SQ <'s/[^0-9]//g'>)})
                                      (C {<sed>} {(SQ <'/^$/d'>)})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [476]
                        )
                      ]
                    )
                  ]
                  spids: [461 472]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CPU_SCALINGSUPPORTED)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [523]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CPU_TEMP_CURRENT)
          op: assign_op.Equal
          rhs: {(SQ <Unknown>)}
          spids: [536]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CPU_TEMP_PRINT)
          op: assign_op.Equal
          rhs: {(SQ <Unknown>)}
          spids: [542]
        )
      ]
    )
    (command.ShFunction
      name: Obtain_Cpu_Temp
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CPU_TEMP_CURRENT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<G_OBTAIN_CPU_TEMP>})
                      )
                    }
                  spids: [557]
                )
              ]
            )
            (C {<local>} {<Id.Lit_VarLike 'cpu_temp_current_f='> (SQ <Unknown>)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_EqualTilde
                                  left: {($ Id.VSub_DollarName '$CPU_TEMP_CURRENT')}
                                  right: 
                                    {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> 
                                      <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'>
                                    }
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cpu_temp_current_f)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Slash
                                        left: 
                                          (arith_expr.Binary
                                            op_id: Id.Arith_Star
                                            left: {($ Id.VSub_DollarName '$CPU_TEMP_CURRENT')}
                                            right: {<Id.Lit_Digits 9>}
                                          )
                                        right: {<Id.Lit_Digits 5>}
                                      )
                                    right: {<Id.Lit_Digits 32>}
                                  )
                              )
                            }
                          spids: [596]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_GreatEqual
                                          left: {($ Id.VSub_DollarName '$CPU_TEMP_CURRENT')}
                                          right: {<Id.Lit_Digits 70>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:CPU_TEMP_PRINT)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <Id.Lit_BadBackslash '\\'> <'e[91mWarning: '> 
                                        ($ Id.VSub_DollarName '$CPU_TEMP_CURRENT') <'\'c : '> ($ Id.VSub_DollarName '$cpu_temp_current_f') <'\'f | Reducing the life of your device.'> 
                                        <Id.Lit_BadBackslash '\\'> <'e[0m'>
                                      )
                                    }
                                  spids: [639]
                                )
                              ]
                            )
                          ]
                          spids: [621 635]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_GreatEqual
                                          left: {($ Id.VSub_DollarName '$CPU_TEMP_CURRENT')}
                                          right: {<Id.Lit_Digits 60>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:CPU_TEMP_PRINT)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <Id.Lit_BadBackslash '\\'> <'e[38;5;202m'> 
                                        ($ Id.VSub_DollarName '$CPU_TEMP_CURRENT') <'\'c : '> ($ Id.VSub_DollarName '$cpu_temp_current_f') <'\'f'> <Id.Lit_BadBackslash '\\'> 
                                        <'e[90m | Running hot, not recommended.'> <Id.Lit_BadBackslash '\\'> <'e[0m'>
                                      )
                                    }
                                  spids: [671]
                                )
                              ]
                            )
                          ]
                          spids: [653 667]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_GreatEqual
                                          left: {($ Id.VSub_DollarName '$CPU_TEMP_CURRENT')}
                                          right: {<Id.Lit_Digits 50>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:CPU_TEMP_PRINT)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <Id.Lit_BadBackslash '\\'> <'e[93m'> 
                                        ($ Id.VSub_DollarName '$CPU_TEMP_CURRENT') <'\'c : '> ($ Id.VSub_DollarName '$cpu_temp_current_f') <'\'f'> <Id.Lit_BadBackslash '\\'> <'e[0m '> 
                                        <Id.Lit_BadBackslash '\\'> <'e[90m | Running warm, but safe.'> <Id.Lit_BadBackslash '\\'> <'e[0m'>
                                      )
                                    }
                                  spids: [705]
                                )
                              ]
                            )
                          ]
                          spids: [687 701]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_GreatEqual
                                          left: {($ Id.VSub_DollarName '$CPU_TEMP_CURRENT')}
                                          right: {<Id.Lit_Digits 40>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:CPU_TEMP_PRINT)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <Id.Lit_BadBackslash '\\'> <'e[92m'> 
                                        ($ Id.VSub_DollarName '$CPU_TEMP_CURRENT') <'\'c : '> ($ Id.VSub_DollarName '$cpu_temp_current_f') <'\'f'> <Id.Lit_BadBackslash '\\'> <'e[0m'> 
                                        <Id.Lit_BadBackslash '\\'> <'e[90m | Optimal temperature.'> <Id.Lit_BadBackslash '\\'> <'e[0m'>
                                      )
                                    }
                                  spids: [741]
                                )
                              ]
                            )
                          ]
                          spids: [723 737]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_GreatEqual
                                          left: {($ Id.VSub_DollarName '$CPU_TEMP_CURRENT')}
                                          right: {<Id.Lit_Digits 30>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:CPU_TEMP_PRINT)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <Id.Lit_BadBackslash '\\'> <'e[96m'> 
                                        ($ Id.VSub_DollarName '$CPU_TEMP_CURRENT') <'\'c : '> ($ Id.VSub_DollarName '$cpu_temp_current_f') <'\'f'> <Id.Lit_BadBackslash '\\'> <'e[0m'> 
                                        <Id.Lit_BadBackslash '\\'> <'e[90m | Cool runnings.'> <Id.Lit_BadBackslash '\\'> <'e[0m'>
                                      )
                                    }
                                  spids: [777]
                                )
                              ]
                            )
                          ]
                          spids: [759 773]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:CPU_TEMP_PRINT)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ <Id.Lit_BadBackslash '\\'> <'e[96m'> 
                                    ($ Id.VSub_DollarName '$CPU_TEMP_CURRENT') <'\'c : '> ($ Id.VSub_DollarName '$cpu_temp_current_f') <'\'f '> <Id.Lit_BadBackslash '\\'> <'e[0m '> 
                                    <Id.Lit_BadBackslash '\\'> <'e[90m| Who put me in the freezer!'> <Id.Lit_BadBackslash '\\'> <'e[0m'>
                                  )
                                }
                              spids: [799]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [572 592]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CPU_TEMP_PRINT)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <'e[91mKERNELERR: '> 
                            ($ Id.VSub_DollarName '$CPU_TEMP_CURRENT') <'\'c'> <Id.Lit_BadBackslash '\\'> <'e[0m'>
                          )
                        }
                      spids: [825]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Obtain_Cpu_Gov
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} 
                              {<'/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor'>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CPU_GOV_CURRENT)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<cat>} 
                                    {<'/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor'>}
                                  )
                              )
                            }
                          spids: [867]
                        )
                      ]
                    )
                  ]
                  spids: [852 863]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Print_Stats
      body: 
        (BraceGroup
          children: [
            (C {<echo>} {<-e>} {(DQ )})
            (C {<echo>} {<-e>} 
              {
                (DQ <' '> <Id.Lit_BadBackslash '\\'> 
                  <
'e[38;5;154m─────────────────────────────────────────────────────'
                  > <Id.Lit_BadBackslash '\\'> <'e[0m'> <Id.Lit_BadBackslash '\\'> <'n '> <Id.Lit_BadBackslash '\\'> 
                  <'e[1mDietPi CPU Info'> <Id.Lit_BadBackslash '\\'> <'e[0m'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> 
                  <'e[90m Use dietpi-config to change CPU / performance options'> <Id.Lit_BadBackslash '\\'> <'e[0m'> <Id.Lit_BadBackslash '\\'> <'n '> <Id.Lit_BadBackslash '\\'> 
                  <
'e[38;5;154m─────────────────────────────────────────────────────'
                  > <Id.Lit_BadBackslash '\\'> <'e[0m'>
                )
              }
            )
            (C {<echo>} {<-e>} 
              {
                (DQ <' Architecture '> <Id.Lit_BadBackslash '\\'> <'e[90m|'> <Id.Lit_BadBackslash '\\'> 
                  <'e[0m     '> (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<uname>} {<-m>}))
                )
              }
            )
            (C {<echo>} {<-e>} 
              {
                (DQ <' Temp         '> <Id.Lit_BadBackslash '\\'> <'e[90m|'> <Id.Lit_BadBackslash '\\'> 
                  <'e[0m     '> ($ Id.VSub_DollarName '$CPU_TEMP_PRINT')
                )
              }
            )
            (C {<echo>} {<-e>} 
              {
                (DQ <' Governor     '> <Id.Lit_BadBackslash '\\'> <'e[90m|'> <Id.Lit_BadBackslash '\\'> 
                  <'e[0m     '> ($ Id.VSub_DollarName '$CPU_GOV_CURRENT')
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<Id.Lit_LBracket '['>} 
                                  {(DQ ($ Id.VSub_DollarName '$CPU_GOV_CURRENT'))} {<Id.Lit_Equals '='>} {(DQ <ondemand>)} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} 
                                  {(DQ ($ Id.VSub_DollarName '$CPU_GOV_CURRENT'))} {<Id.Lit_Equals '='>} {(DQ <conservative>)} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} {<-e>} 
                      {
                        (DQ <' Throttle up  '> <Id.Lit_BadBackslash '\\'> <'e[90m|'> 
                          <Id.Lit_BadBackslash '\\'> <'e[0m     '> 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (C {<cat>} {<'/DietPi/dietpi.txt'>})
                                  (C {<grep>} {<-m1>} {(SQ <'^CONFIG_CPU_USAGE_THROTTLE_UP='>)})
                                  (C {<sed>} {(SQ <'s/.*=//'>)})
                                ]
                                negated: F
                              )
                          ) <'% CPU usage'>
                        )
                      }
                    )
                  ]
                  spids: [992 1026]
                )
              ]
            )
            (C {<echo>} {<-e>} {(DQ )})
            (C {<echo>} {<-e>} 
              {
                (DQ <' '> <Id.Lit_BadBackslash '\\'> 
                  <'e[90m                Current Freq    Min Freq   Max Freq'> <Id.Lit_BadBackslash '\\'> <'e[0m'>
                )
              }
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike i>
                  right: {<Id.Lit_Digits 0>}
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Less
                  left: <Id.Lit_ArithVarLike i>
                  right: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name aCPU_CURRENT_FREQ>
                        prefix_op: (Id.VSub_Pound)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      )
                    }
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>)
              body: 
                (command.DoGroup
                  children: [
                    (C {<echo>} {<-e>} 
                      {
                        (DQ <' '> <Id.Lit_BadBackslash '\\'> <'e[90mCPU'> ($ Id.VSub_DollarName '$i') 
                          <Id.Lit_BadBackslash '\\'> <'e[0m         '> <Id.Lit_BadBackslash '\\'> <'e[90m|'> <Id.Lit_BadBackslash '\\'> <'e[0m      '> 
                          (word_part.ArithSub
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Slash
                                left: 
                                  {
                                    (braced_var_sub
                                      token: <Id.VSub_Name aCPU_CURRENT_FREQ>
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: {($ Id.VSub_DollarName '$i')}
                                        )
                                    )
                                  }
                                right: {<Id.Lit_Digits 1000>}
                              )
                          ) <' MHz      '> <Id.Lit_BadBackslash '\\'> <'e[90m'> 
                          (word_part.ArithSub
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Slash
                                left: 
                                  {
                                    (braced_var_sub
                                      token: <Id.VSub_Name aCPU_MIN_FREQ>
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: {($ Id.VSub_DollarName '$i')}
                                        )
                                    )
                                  }
                                right: {<Id.Lit_Digits 1000>}
                              )
                          ) <' MHz    '> 
                          (word_part.ArithSub
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Slash
                                left: 
                                  {
                                    (braced_var_sub
                                      token: <Id.VSub_Name aCPU_MAX_FREQ>
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: {($ Id.VSub_DollarName '$i')}
                                        )
                                    )
                                  }
                                right: {<Id.Lit_Digits 1000>}
                              )
                          ) <' MHz'> <Id.Lit_BadBackslash '\\'> <'e[0m'>
                        )
                      }
                    )
                  ]
                )
            )
            (C {<echo>} {<-e>} {(DQ )})
            (C {<G_DIETPI-NOTIFY>} {<2>} 
              {
                (SQ 
                  <
'CPU current frequency, may be affected by this script, due to the processing required to run it.\\n'
                  >
                )
              }
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$INPUT')}
                          right: {<Id.Lit_Digits 2>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<Obtain_Cpu_Freq>})
            (command.Simple
              words: [{<rm>} {(DQ ($ Id.VSub_DollarName '$FP_CPU_SCALINGAVAILABLE_FREQ'))}]
              redirects: [
                (redir
                  op: <Id.Redir_AndGreat '&>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
              ]
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: {($ Id.VSub_DollarName '$CPU_SCALINGSUPPORTED')}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ForExpr
                      init: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: <Id.Lit_ArithVarLike i>
                          right: {<Id.Lit_Digits 0>}
                        )
                      cond: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: <Id.Lit_ArithVarLike i>
                          right: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name aCPU_SCALINGAVAILABLE_FREQ>
                                prefix_op: (Id.VSub_Pound)
                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                              )
                            }
                        )
                      update: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: <Id.Lit_ArithVarLike i>
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {<-e>}
                                {
                                  (DQ 
                                    (braced_var_sub
                                      token: <Id.VSub_Name aCPU_SCALINGAVAILABLE_FREQ>
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: {($ Id.VSub_DollarName '$i')}
                                        )
                                    )
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(DQ ($ Id.VSub_DollarName '$FP_CPU_SCALINGAVAILABLE_FREQ'))}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                        )
                    )
                    (C {<sort>} {<-u>} {<-n>} 
                      {(DQ ($ Id.VSub_DollarName '$FP_CPU_SCALINGAVAILABLE_FREQ'))} {<-o>} {(DQ ($ Id.VSub_DollarName '$FP_CPU_SCALINGAVAILABLE_FREQ'))}
                    )
                  ]
                  spids: [1287 1297]
                )
              ]
            )
          ]
          spids: [1249 1263]
        )
      ]
      else_action: [
        (C {<Obtain_Cpu_Freq>})
        (C {<Obtain_Cpu_Temp>})
        (C {<Obtain_Cpu_Gov>})
        (C {<Print_Stats>})
      ]
    )
    (C {<unset>} {<aCPU_CURRENT_FREQ>})
    (C {<unset>} {<aCPU_MIN_FREQ>})
    (C {<unset>} {<aCPU_MAX_FREQ>})
    (C {<unset>} {<aCPU_SCALINGAVAILABLE_FREQ>})
    (C {<unset>} {<afp_temperature>})
    (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
  ]
)