(command.CommandList
  children: [
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:NETDOWN spids:[31])
          op: Equal
          rhs: {(yes)}
          spids: [31]
        )
      ]
      spids: [31]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:PATH spids:[35])
          op: Equal
          rhs: {(/sbin) (Lit_Other ':') (/usr/sbin) (Lit_Other ':') (/bin) (Lit_Other ':') (/usr/bin)}
          spids: [35]
        )
      ]
      spids: [35]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(Lit_Other '[')} {(-f)} {(/etc/default/halt)} {(Lit_Other ']')})
        (C {(.)} {(/etc/default/halt)})
      ]
    )
    (C {(.)} {(/lib/lsb/init-functions)})
    (command.FuncDef
      name: do_stop
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$INIT_HALT'))} {(Lit_Other '=')} {(DQ )} 
                      {(Lit_Other ']')}
                    )
                  ]
                  action: [
                    (command.Case
                      to_match: {(DQ ($ VSub_DollarName '$HALT'))}
                      arms: [
                        (case_arm
                          pat_list: [{(Lit_Other '[') (Pp) (Lit_Other ']') (Lit_Other '*')}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:INIT_HALT spids:[107])
                                  op: Equal
                                  rhs: {(POWEROFF)}
                                  spids: [107]
                                )
                              ]
                              spids: [107]
                            )
                          ]
                          spids: [100 104 111 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '[') (Hh) (Lit_Other ']') (Lit_Other '*')}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:INIT_HALT spids:[121])
                                  op: Equal
                                  rhs: {(HALT)}
                                  spids: [121]
                                )
                              ]
                              spids: [121]
                            )
                          ]
                          spids: [114 118 125 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (command.Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (lhs_expr.LhsName name:INIT_HALT spids:[132])
                                  op: Equal
                                  rhs: {(POWEROFF)}
                                  spids: [132]
                                )
                              ]
                              spids: [132]
                            )
                          ]
                          spids: [128 129 136 16777215]
                        )
                      ]
                      spids: [91 97 139]
                    )
                  ]
                  spids: [16777215 88]
                )
              ]
              spids: [16777215 142]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$INIT_HALT'))} {(Lit_Other '=')} 
                          {(DQ (POWEROFF))} {(Lit_Other ']')}
                        )
                        (C {(Lit_Other '[')} {(-x)} {(/etc/init.d/ups-monitor)} {(Lit_Other ']')})
                      ]
                    )
                  ]
                  action: [(C {(/etc/init.d/ups-monitor)} {(poweroff)})]
                  spids: [16777215 177]
                )
              ]
              spids: [16777215 185]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:hddown spids:[193])
                  op: Equal
                  rhs: {(DQ (-h))}
                  spids: [193]
                )
              ]
              spids: [193]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(grep)} {(-qs)} {(SQ <'^md.*active'>)} {(/proc/mdstat)})]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:hddown spids:[215])
                          op: Equal
                          rhs: {(DQ )}
                          spids: [215]
                        )
                      ]
                      spids: [215]
                    )
                  ]
                  spids: [16777215 212]
                )
              ]
              spids: [16777215 220]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:poweroff spids:[228])
                  op: Equal
                  rhs: {(DQ (-p))}
                  spids: [228]
                )
              ]
              spids: [228]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$INIT_HALT'))} {(Lit_Other '=')} 
                      {(DQ (HALT))} {(Lit_Other ']')}
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:poweroff spids:[254])
                          op: Equal
                          rhs: {(DQ )}
                          spids: [254]
                        )
                      ]
                      spids: [254]
                    )
                  ]
                  spids: [16777215 251]
                )
              ]
              spids: [16777215 259]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:netdown spids:[271])
                  op: Equal
                  rhs: {(DQ (-i))}
                  spids: [271]
                )
              ]
              spids: [271]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$NETDOWN'))} {(Lit_Other '=')} 
                          {(DQ (no))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:netdown spids:[297])
                          op: Equal
                          rhs: {(DQ )}
                          spids: [297]
                        )
                      ]
                      spids: [297]
                    )
                  ]
                  spids: [16777215 294]
                )
              ]
              spids: [16777215 302]
            )
            (C {(log_action_msg)} {(DQ ('Will now halt'))})
            (C {(halt)} {(-d)} {(-f)} {($ VSub_DollarName '$netdown')} {($ VSub_DollarName '$poweroff')} 
              {($ VSub_DollarName '$hddown')}
            )
          ]
          spids: [69]
        )
      spids: [64 68]
    )
    (command.Case
      to_match: {(DQ ($ VSub_Number '$1'))}
      arms: [
        (case_arm pat_list:[{(start)} {(status)}] spids:[337 340 347 16777215])
        (case_arm
          pat_list: [{(restart)} {(reload)} {(force-reload)}]
          action: [
            (command.SimpleCommand
              words: [{(echo)} {(DQ ("Error: argument '") ($ VSub_Number '$1') ("' not supported"))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(3)})
          ]
          spids: [350 355 375 16777215]
        )
        (case_arm pat_list:[{(stop)}] action:[(C {(do_stop)})] spids:[378 379 385 16777215])
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (command.SimpleCommand
              words: [{(echo)} {(DQ ('Usage: ') ($ VSub_Number '$0') (' start|stop'))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(3)})
          ]
          spids: [388 389 409 16777215]
        )
      ]
      spids: [328 334 411]
    )
    (C {(Lit_Other ':')})
  ]
)