(command.CommandList
  children: [
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:PATH spids:[38])
          op: Equal
          rhs: {(/sbin) (Lit_Other ':') (/bin) (Lit_Other ':') (/usr/sbin) (Lit_Other ':') (/usr/bin)}
          spids: [38]
        )
      ]
      spids: [38]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:DAEMON spids:[47])
          op: Equal
          rhs: {(/usr/bin/speech-dispatcher)}
          spids: [47]
        )
      ]
      spids: [47]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:PIDFILE spids:[50])
          op: Equal
          rhs: {(/var/run/speech-dispatcher/speech-dispatcher.pid)}
          spids: [50]
        )
      ]
      spids: [50]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:NAME spids:[53])
          op: Equal
          rhs: {(speech-dispatcher)}
          spids: [53]
        )
      ]
      spids: [53]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:DESC spids:[56])
          op: Equal
          rhs: {(SQ <'Speech Dispatcher'>)}
          spids: [56]
        )
      ]
      spids: [56]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:USER spids:[61])
          op: Equal
          rhs: {(speech-dispatcher)}
          spids: [61]
        )
      ]
      spids: [61]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(-f)} {($ VSub_DollarName '$DAEMON')})
        (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
      ]
    )
    (C {(.)} {(/lib/lsb/init-functions)})
    (command.Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:RUN spids:[83]) op:Equal rhs:{(no)} spids:[83])]
      spids: [83]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(Lit_Other '[')} {(-f)} {(/etc/default/speech-dispatcher)} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(.)} {(/etc/default/speech-dispatcher)})]
          spids: [16777215 102]
        )
      ]
      spids: [16777215 109]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ (x) ($ VSub_DollarName '$RUN'))} 
                  {(KW_Bang '!') (Lit_Other '=')} {(DQ (xyes))} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(log_action_msg)} 
              {(DQ ($ VSub_DollarName '$NAME') (' disabled; edit /etc/default/speech-dispatcher'))}
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
          ]
          spids: [16777215 132]
        )
      ]
      spids: [16777215 147]
    )
    (C {(set)} {(-e)})
    (command.FuncDef
      name: do_start
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:PIDDIR spids:[163])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [(C {(dirname)} {($ VSub_DollarName '$PIDFILE')})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [164 168]
                      )
                    }
                  spids: [163]
                )
              ]
              spids: [163]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(Lit_Other '[')} {(-e)} {($ VSub_DollarName '$PIDDIR')} {(Lit_Other ']')})
                (C {(install)} {(-d)} {(-ospeech-dispatcher)} {(-gaudio)} {(-m750)} 
                  {($ VSub_DollarName '$PIDDIR')}
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:SDDIR spids:[194])
                  op: Equal
                  rhs: {($ VSub_DollarName '$PIDDIR') (/.speech-dispatcher)}
                  spids: [194]
                )
              ]
              spids: [194]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(Lit_Other '[')} {(-e)} {($ VSub_DollarName '$SDDIR')} {(Lit_Other ']')})
                (C {(ln)} {(-s)} {($ VSub_DollarName '$PIDDIR')} {($ VSub_DollarName '$SDDIR')})
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:LOGDIR spids:[218])
                  op: Equal
                  rhs: {($ VSub_DollarName '$SDDIR') (/log)}
                  spids: [218]
                )
              ]
              spids: [218]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(Lit_Other '[')} {(-e)} {($ VSub_DollarName '$LOGDIR')} {(Lit_Other ']')})
                (C {(ln)} {(-s)} {(/var/log/speech-dispatcher)} {($ VSub_DollarName '$LOGDIR')})
              ]
            )
            (C {(start-stop-daemon)} {(--oknodo)} {(--start)} {(--quiet)} {(--chuid)} 
              {($ VSub_DollarName '$USER')} {(--pidfile)} {($ VSub_DollarName '$PIDFILE')} {(--exec)} {($ VSub_DollarName '$DAEMON')} {(--)} 
              {(--pid-file)} {($ VSub_DollarName '$PIDFILE')}
            )
          ]
          spids: [160]
        )
      spids: [155 159]
    )
    (command.FuncDef
      name: do_stop
      body: 
        (command.BraceGroup
          children: [
            (C {(start-stop-daemon)} {(--oknodo)} {(--stop)} {(--quiet)} {(--user)} 
              {($ VSub_DollarName '$USER')} {(--pidfile)} {($ VSub_DollarName '$PIDFILE')} {(--exec)} {($ VSub_DollarName '$DAEMON')}
            )
          ]
          spids: [278]
        )
      spids: [273 277]
    )
    (command.Case
      to_match: {(DQ ($ VSub_Number '$1'))}
      arms: [
        (case_arm
          pat_list: [{(start)}]
          action: [
            (C {(log_daemon_msg)} {(DQ ('Starting ') ($ VSub_DollarName '$DESC'))} 
              {(DQ (speech-dispatcher))}
            )
            (C {(do_start)})
            (C {(log_end_msg)} {($ VSub_QMark '$?')})
          ]
          spids: [315 316 339 16777215]
        )
        (case_arm
          pat_list: [{(stop)}]
          action: [
            (C {(log_daemon_msg)} {(DQ ('Stopping ') ($ VSub_DollarName '$DESC'))} 
              {(DQ (speech-dispatcher))}
            )
            (C {(do_stop)})
            (C {(log_end_msg)} {($ VSub_QMark '$?')})
          ]
          spids: [342 343 366 16777215]
        )
        (case_arm
          pat_list: [{(reload)} {(force-reload)}]
          action: [
            (C {(log_daemon_msg)} 
              {(DQ ('Reloading ') ($ VSub_DollarName '$DESC') (' configuration files'))} {(DQ (speech-dispatcher))}
            )
            (C {(start-stop-daemon)} {(--oknodo)} {(--stop)} {(--signal)} {(1)} {(--quiet)} {(--user)} 
              {($ VSub_DollarName '$USER')} {(--pidfile)} {($ VSub_DollarName '$PIDFILE')} {(--exec)} {($ VSub_DollarName '$DAEMON')}
            )
            (C {(log_end_msg)} {($ VSub_QMark '$?')})
          ]
          spids: [369 372 420 16777215]
        )
        (case_arm
          pat_list: [{(restart)}]
          action: [
            (C {(log_daemon_msg)} {(DQ ('Restarting ') ($ VSub_DollarName '$DESC'))} 
              {(DQ (speech-dispatcher))}
            )
            (C {(do_stop)})
            (C {(sleep)} {(3)})
            (C {(do_start)})
            (C {(log_end_msg)} {($ VSub_QMark '$?')})
          ]
          spids: [423 424 455 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:N spids:[462])
                  op: Equal
                  rhs: {(/etc/init.d/) ($ VSub_DollarName '$NAME')}
                  spids: [462]
                )
              ]
              spids: [462]
            )
            (command.SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ ('Usage: ') ($ VSub_DollarName '$N') 
                    (' {start|stop|restart|reload|force-reload}')
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [458 459 484 16777215]
        )
      ]
      spids: [306 312 486]
    )
    (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
  ]
)