(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SVCS='> name:SVCS)
          op: assign_op.Equal
          rhs: {<'/usr/bin/svcs'>}
          spids: [121]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DSCFG_DEPEND_NOCHK='> name:DSCFG_DEPEND_NOCHK)
          op: assign_op.Equal
          rhs: {(DQ <'/tmp/.dscfgadm_pid'>)}
          spids: [124]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OS_MINOR='> name:OS_MINOR)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<'/usr/bin/uname'>} {<-r>})
                      (C {<'/usr/bin/cut'>} {<-d>} {(SQ <.>)} {<-f2>})
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [129]
        )
      ]
      redirects: []
    )
    (C {<.>} {<'/lib/svc/share/smf_include.sh'>})
    (command.ShFunction
      name: do_smf_depends
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'times='> name:times)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [173]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'count='> name:count)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [177]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName OS_MINOR)} {<-ge>} {<11>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [182 195]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<-f>} {($ Id.VSub_DollarName DSCFG_DEPEND_NOCHK)} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.ForEach
                      iter_names: [pid]
                      iterable: 
                        (for_iter.Words
                          words: [
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<pgrep>} {<dscfgadm>})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (C {<Id.Lit_LBracket '['>} 
                                          {
                                            (command_sub
                                              left_token: <Id.Left_Backtick '`'>
                                              child: 
                                                (C {<grep>} {<-c>} {($ Id.VSub_DollarName pid)} 
                                                  {($ Id.VSub_DollarName DSCFG_DEPEND_NOCHK)}
                                                )
                                              right: <Id.Backtick_Right '`'>
                                            )
                                          } {<-gt>} {<0>} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Return return>
                                      arg_word: {<0>}
                                    )
                                  ]
                                  spids: [235 258]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  spids: [203 214]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} 
                          {
                            (command_sub
                              left_token: <Id.Left_Backtick '`'>
                              child: 
                                (command.Pipeline
                                  children: [
                                    (C {<ps>} {<-ef>})
                                    (C {<grep>} {<preremove>})
                                    (C {<grep>} {<-c>} {<SUNWscmu>})
                                  ]
                                  negated: F
                                  stderr_indices: []
                                )
                              right: <Id.Backtick_Right '`'>
                            )
                          } {<-gt>} {<0>} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [272 305]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName count)} {<-ne>} {<0>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'count='> name:count)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        words: [
                                          {($ Id.VSub_DollarName SVCS)}
                                          {<-o>}
                                          {<STATE>}
                                          {<-D>}
                                          {($ Id.VSub_Number 1)}
                                        ]
                                        redirects: [
                                          (redir
                                            op: <Id.Redir_DGreat '2>>'>
                                            loc: (redir_loc.Fd fd:2)
                                            arg: {<'/dev/null'>}
                                          )
                                        ]
                                        more_env: []
                                        do_fork: T
                                      )
                                      (C {<grep>} {(DQ <'^online'>)})
                                      (C {<wc>} {<-l>})
                                    ]
                                    negated: F
                                    stderr_indices: []
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [334]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName count)} {<-ne>} {<0>} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName times)} 
                                          {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<echo>} 
                                      {
                                        (DQ <'Waiting for '> ($ Id.VSub_Number 1) 
                                          <' dependents to be \'offline\''>
                                        )
                                      }
                                    )
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          words: [
                                            {($ Id.VSub_DollarName SVCS)}
                                            {<-D>}
                                            {($ Id.VSub_Number 1)}
                                          ]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_DGreat '2>>'>
                                              loc: (redir_loc.Fd fd:2)
                                              arg: {<'/dev/null'>}
                                            )
                                          ]
                                          more_env: []
                                          do_fork: T
                                        )
                                        (C {<grep>} {(DQ <'^online'>)})
                                      ]
                                      negated: F
                                      stderr_indices: []
                                    )
                                  ]
                                  spids: [391 404]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName times)} 
                                          {<-eq>} {<60>} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<echo>} 
                                      {
                                        (DQ <'Error: Failed waiting for '> ($ Id.VSub_Number 1) 
                                          <' dependents to be \'offline\''>
                                        )
                                      }
                                    )
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          words: [
                                            {($ Id.VSub_DollarName SVCS)}
                                            {<-D>}
                                            {($ Id.VSub_Number 1)}
                                          ]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_DGreat '2>>'>
                                              loc: (redir_loc.Fd fd:2)
                                              arg: {<'/dev/null'>}
                                            )
                                          ]
                                          more_env: []
                                          do_fork: T
                                        )
                                        (C {<grep>} {(DQ <'^online'>)})
                                      ]
                                      negated: F
                                      stderr_indices: []
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Exit exit>
                                      arg_word: {($ Id.VSub_DollarName SMF_EXIT_ERR_FATAL)}
                                    )
                                  ]
                                  spids: [446 459]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (C {<sleep>} {<5>})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'times='> name:times)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<expr>} {($ Id.VSub_DollarName times)} 
                                            {<Id.Lit_Other '+'>} {<1>}
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [511]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [367 380]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: set_system_type
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CLINFO='> name:CLINFO)
                  op: assign_op.Equal
                  rhs: {<'/usr/sbin/clinfo'>}
                  spids: [545]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ESMSBIN='> name:ESMSBIN)
                  op: assign_op.Equal
                  rhs: {<'/usr/sbin'>}
                  spids: [549]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SCMBIN='> name:SCMBIN)
                  op: assign_op.Equal
                  rhs: {<'/usr/sbin'>}
                  spids: [553]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ESMSCMLIB='> name:ESMSCMLIB)
                  op: assign_op.Equal
                  rhs: {<'/usr/lib'>}
                  spids: [557]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SCMLIB='> name:SCMLIB)
                  op: assign_op.Equal
                  rhs: {<'/usr/lib'>}
                  spids: [561]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DSCFG_LOCKDB='> name:DSCFG_LOCKDB)
                  op: assign_op.Equal
                  rhs: {<'/etc/dscfg_lockdb'>}
                  spids: [565]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: do_stopsdbc
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-r>} {<'/dev/sdbc'>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return>)]
                  spids: [579 592]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {(${ Id.VSub_Name SCMBIN) <'/scmadm'>} {<-d>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(DQ <'Cache Not Deconfigured'>)})]
                  spids: [610 624]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: do_stopnskernd
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (C {<ps>} {<-e>})
                (command.Simple
                  words: [{<grep>} {<-w>} {<nskernd>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
              negated: F
              stderr_indices: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stop='> name:stop)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [704]
                        )
                      ]
                      redirects: []
                    )
                    (command.ForEach
                      iter_names: [m]
                      iterable: (for_iter.Words words:[{<ste>} {<rdc>} {<rdcsrv>} {<ii>} {<sdbc>}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mid='> name:mid)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<'/usr/sbin/modinfo'>})
                                              (C {<grep>} {<-w>} {($ Id.VSub_DollarName m)})
                                              (C {<awk>} {(SQ <'{print $1}'>)} {<->})
                                            ]
                                            negated: F
                                            stderr_indices: []
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [729]
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-z>} 
                                              {(DQ ($ Id.VSub_DollarName mid))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [755 769]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (command.Simple
                              words: [{<'/usr/sbin/modunload'>} {<-i>} {($ Id.VSub_DollarName mid)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                                (redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} 
                                              {<0>} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'stop='>
                                              name: stop
                                            )
                                          op: assign_op.Equal
                                          rhs: {<0>}
                                          spids: [812]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [795 809]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                        )
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pid='> name:pid)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<ps>} {<-e>})
                                      (C {<grep>} {<-w>} {<nskernd>})
                                      (C {<sed>} {<-e>} {(SQ <'s/^  *//'>)} {<-e>} {(SQ <'s/ .*//'>)})
                                    ]
                                    negated: F
                                    stderr_indices: []
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [830]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName stop)} {<-eq>} 
                                      {<1>} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                                              {(DQ ($ Id.VSub_DollarName pid))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [(C {<kill>} {<-15>} {($ Id.VSub_DollarName pid)})]
                                  spids: [881 895]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                          spids: [864 878]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [671 685]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<-r>} {<'/dev/ncall'>} {<-a>} {<-x>} 
                          {($ Id.VSub_DollarName ESMSCMLIB) <'/ncalladm'>} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [(C {($ Id.VSub_DollarName ESMSCMLIB) <'/ncalladm'>} {<-d>})]
                  spids: [915 933]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: do_stopdscfglockd
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pid='> name:pid)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<ps>} {<-e>})
                              (C {<grep>} {<-w>} {<dscfgloc>})
                              (C {<sed>} {<-e>} {(SQ <'s/^  *//'>)} {<-e>} {(SQ <'s/ .*//'>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [955]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName pid))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<kill>} {<-15>} {($ Id.VSub_DollarName pid)})]
                  spids: [989 1003]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: do_stop
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<do_smf_depends>} {(DQ <'system/nws_scm'>)})
            (C {<do_stopsdbc>})
            (C {<do_stopnskernd>})
            (C {<do_stopdscfglockd>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: do_nskernd
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<-x>} 
                          {($ Id.VSub_DollarName ESMSCMLIB) <'/ncalladm'>} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [(C {($ Id.VSub_DollarName ESMSCMLIB) <'/ncalladm'>} {<-e>})]
                  spids: [1052 1064]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Pipeline
              children: [
                (C {<ps>} {<-e>})
                (command.Simple
                  words: [{<grep>} {<-w>} {<nskernd>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
              negated: F
              stderr_indices: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {(${ Id.VSub_Name SCMLIB) <'/nskernd'>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} {(DQ <'Error: Unable to start nskernd'>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {($ Id.VSub_DollarName SMF_EXIT_ERR_FATAL)}
                            )
                          ]
                          spids: [1120 1134]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [1097 1111]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: do_dscfglockd
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (C {<ps>} {<-e>})
                (command.Simple
                  words: [{<grep>} {<-w>} {<dscfgloc>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
              negated: F
              stderr_indices: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [(C {<rm>} {<-f>} {<'/var/tmp/.cfglockd.pid'>})]
                  spids: [1185 1198]
                )
              ]
              else_action: [(command.ControlFlow token:<Id.ControlFlow_Return return>)]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: (condition.Shell commands:[(C {(${ Id.VSub_Name CLINFO)})])
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NODELIST='> name:NODELIST)
                          op: assign_op.Equal
                          rhs: {<'/tmp/'> ($ Id.VSub_Dollar '$') <.dscfg_nodelist>}
                          spids: [1249]
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      words: [{<rm>} {<-f>} {($ Id.VSub_DollarName NODELIST)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<1>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (C {<touch>} {($ Id.VSub_DollarName NODELIST)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {<-x>} {<'/usr/cluster/bin/scstat'>} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (command.Pipeline
                              children: [
                                (C {<'/usr/cluster/bin/scstat'>} {<-n>})
                                (C {<grep>} {<node> <Id.Lit_Colon ':'>})
                                (command.Simple
                                  words: [{<awk>} {(SQ <'{print $3}'>)}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_DGreat '>>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {($ Id.VSub_DollarName NODELIST)}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                              ]
                              negated: F
                              stderr_indices: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} 
                                          {($ Id.VSub_DollarName DSCFG_LOCKDB)} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<printf>} 
                                      {
                                        (DQ <'In clustered environment.'> <Id.Lit_BadBackslash '\\'> 
                                          <n>
                                        )
                                      }
                                    )
                                    (C {<printf>} {(DQ <'creating per node dscfg_lockdb database'>)})
                                    (C {<printf>} 
                                      {
                                        (DQ <' with following nodenames:'> <Id.Lit_BadBackslash '\\'> 
                                          <n>
                                        )
                                      }
                                    )
                                    (C {<cat>} {($ Id.VSub_DollarName NODELIST)})
                                    (C {<cp>} {($ Id.VSub_DollarName NODELIST)} 
                                      {($ Id.VSub_DollarName DSCFG_LOCKDB)}
                                    )
                                  ]
                                  spids: [1318 1331]
                                )
                              ]
                              else_action: [
                                (command.Simple
                                  words: [
                                    {<diff>}
                                    {($ Id.VSub_DollarName NODELIST)}
                                    {($ Id.VSub_DollarName DSCFG_LOCKDB)}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} 
                                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>}
                                            )
                                          ]
                                        )
                                      action: [
                                        (C {<printf>} {(DQ <'The cluster node names have '>)})
                                        (C {<printf>} {(DQ <'changed. Updating dscfg_lockdb '>)})
                                        (C {<printf>} {(DQ <database.> <Id.Lit_BadBackslash '\\'> <n>)})
                                        (C {<printf>} 
                                          {
                                            (DQ <'Previous node names:'> <Id.Lit_BadBackslash '\\'> <n>)
                                          }
                                        )
                                        (C {<cat>} {($ Id.VSub_DollarName DSCFG_LOCKDB)})
                                        (C {<printf>} 
                                          {(DQ <'New node names:'> <Id.Lit_BadBackslash '\\'> <n>)}
                                        )
                                        (C {<cat>} {($ Id.VSub_DollarName NODELIST)})
                                        (C {<rm>} {<-f>} {($ Id.VSub_DollarName DSCFG_LOCKDB)})
                                        (C {<cp>} {($ Id.VSub_DollarName NODELIST)} 
                                          {($ Id.VSub_DollarName DSCFG_LOCKDB)}
                                        )
                                      ]
                                      spids: [1389 1403]
                                    )
                                  ]
                                  else_action: []
                                  redirects: []
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1274 1285]
                        )
                      ]
                      else_action: [
                        (C {<printf>} 
                          {(DQ <'In clustered environment.'> <Id.Lit_BadBackslash '\\'> <n>)}
                        )
                        (C {<printf>} 
                          {
                            (DQ <'Required configuration file, '> ($ Id.VSub_DollarName DSCFG_LOCKDB) 
                              <Id.Lit_BadBackslash '\\'> <n>
                            )
                          }
                        )
                        (C {<printf>} {(DQ <'was not properly populated with the cluster '>)})
                        (C {<printf>} 
                          {
                            (DQ <nodenames.> <Id.Lit_BadBackslash '\\'> 
                              <'nThis file needs to be manually'>
                            )
                          }
                        )
                        (C {<printf>} 
                          {
                            (DQ <'updated with the cluster'> <Id.Lit_BadBackslash '\\'> 
                              <'nnodenames before '>
                            )
                          }
                        )
                        (C {<printf>} 
                          {
                            (DQ <'reboot.  Refer to Sun Storage Availability'> 
                              <Id.Lit_BadBackslash '\\'> <n>
                            )
                          }
                        )
                        (C {<printf>} 
                          {
                            (DQ <'Suite Installation Guide for details.'> <Id.Lit_BadBackslash '\\'> 
                              <n>
                            )
                          }
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {<-f>} {($ Id.VSub_DollarName DSCFG_LOCKDB)} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<printf>} {(DQ <'Starting dscfglockd'> <Id.Lit_BadBackslash '\\'> <n>)})
                            (C {(${ Id.VSub_Name SCMLIB) <'/dscfglockd'>} {<-f>} 
                              {($ Id.VSub_DollarName DSCFG_LOCKDB)}
                            )
                          ]
                          spids: [1554 1565]
                        )
                      ]
                      else_action: [
                        (C {<printf>} {(DQ <'WARNING: Mis-Configuration of Availability '>)})
                        (C {<printf>} {(DQ <'Suite for Sun Cluster'> <Id.Lit_BadBackslash '\\'> <n>)})
                        (C {<printf>} {(DQ <'WARNING: Can\'t find configuration file for '>)})
                        (C {<printf>} {(DQ <dscfglockd> <Id.Lit_BadBackslash '\\'> <n>)})
                      ]
                      redirects: []
                    )
                    (C {<rm>} {<-f>} {($ Id.VSub_DollarName NODELIST)})
                  ]
                  spids: [1222 1229]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: do_sdbc
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [(C {(${ Id.VSub_Name SCMBIN) <'/scmadm'>} {<-e>})]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: do_start
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {<'/etc/dscfg_local'>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} {(DQ <'Cannot find Availability Suite configuration location'>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {($ Id.VSub_DollarName SMF_EXIT_ERR_NOSMF)}
                    )
                  ]
                  spids: [1671 1684]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<do_dscfglockd>})
            (C {<do_nskernd>})
            (C {<do_sdbc>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: do_usage
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<echo>} {(DQ <'Usage: '> ($ Id.VSub_Number 0))})
            (C {<echo>} {(DQ <'   start'>)})
            (C {<echo>} {(DQ <'   stop'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (C {<set_system_type>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USED='> name:USED)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [1779]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ACTION='> name:ACTION)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [1782]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CLUSTERTAG='> name:CLUSTERTAG)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [1784]
        )
      ]
      redirects: []
    )
    (command.Case
      to_match: {($ Id.VSub_Pound '#')}
      arms: [
        (case_arm pat_list:[{(SQ <0>)}] action:[(C {<do_usage>})] spids:[1794 1797 1803 -1])
        (case_arm
          pat_list: [{(SQ <1>)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ACTION='> name:ACTION)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [1812]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USED='> name:USED)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [1816]
                )
              ]
              redirects: []
            )
          ]
          spids: [1805 1808 1820 -1]
        )
        (case_arm
          pat_list: [{(SQ <2>)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ACTION='> name:ACTION)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [1828]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CLUSTERTAG='> name:CLUSTERTAG)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 2))}
                  spids: [1832]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USED='> name:USED)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [1838]
                )
              ]
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
          spids: [1822 1825 1847 -1]
        )
        (case_arm
          pat_list: [{(SQ <'*'>)}]
          action: [(C {<do_usage>})]
          spids: [1849 1852 1858 -1]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName USED)} {<Id.Lit_Equals '='>} {<0>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<do_usage>})]
          spids: [1863 1877]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName ACTION)} {<Id.Lit_Equals '='>} 
                      {(DQ <start>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<do_start>})]
          spids: [1885 1901]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName ACTION)} {<Id.Lit_Equals '='>} 
                      {(DQ <stop>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<do_stop>})]
          spids: [1906 1922]
        )
      ]
      else_action: [(C {<do_usage>})]
      redirects: []
    )
    (command.ControlFlow
      token: <Id.ControlFlow_Exit exit>
      arg_word: {($ Id.VSub_DollarName SMF_EXIT_OK)}
    )
  ]
)