(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PATH)
          op: assign_op.Equal
          rhs: 
            {</sbin> <Id.Lit_Other ':'> </usr/sbin> <Id.Lit_Other ':'> </bin> <Id.Lit_Other ':'> 
              </usr/bin>
            }
          spids: [48]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DESC)
          op: assign_op.Equal
          rhs: {(DQ <'Kernel crash collector'>)}
          spids: [57]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NAME)
          op: assign_op.Equal
          rhs: {<kerneloops>}
          spids: [62]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DAEMON)
          op: assign_op.Equal
          rhs: {</usr/sbin/> ($ Id.VSub_DollarName '$NAME')}
          spids: [65]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PIDFILE)
          op: assign_op.Equal
          rhs: {</var/run/> ($ Id.VSub_DollarName '$NAME') <.pid>}
          spids: [69]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SCRIPTNAME)
          op: assign_op.Equal
          rhs: {</etc/init.d/> ($ Id.VSub_DollarName '$NAME')}
          spids: [74]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ENABLED)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [78]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-x>} {(DQ ($ Id.VSub_DollarName '$DAEMON'))} {<Id.Lit_RBracket ']'>})
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-r>} {</etc/default/> ($ Id.VSub_DollarName '$NAME')} 
          {<Id.Lit_RBracket ']'>}
        )
        (C {<.>} {</etc/default/> ($ Id.VSub_DollarName '$NAME')})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$ENABLED'))} {<Id.Lit_Equals '='>} 
          {(DQ <1>)} {<Id.Lit_RBracket ']'>}
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
      ]
    )
    (C {<.>} {</lib/init/vars.sh>})
    (C {<.>} {</lib/lsb/init-functions>})
    (command.ShFunction
      name: do_start
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [
                    {<start-stop-daemon>}
                    {<--start>}
                    {<--quiet>}
                    {<--chuid>}
                    {<kernoops> <Id.Lit_Other ':'> <adm>}
                    {<--pidfile>}
                    {($ Id.VSub_DollarName '$PIDFILE')}
                    {<--exec>}
                    {($ Id.VSub_DollarName '$DAEMON')}
                    {<--test>}
                  ]
                  redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</dev/null>})]
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<start-stop-daemon>} {<--start>} {<--quiet>} {<--chuid>} 
                  {<kernoops> <Id.Lit_Other ':'> <adm>} {<--pidfile>} {($ Id.VSub_DollarName '$PIDFILE')} {<--exec>} {($ Id.VSub_DollarName '$DAEMON')} {<-->} 
                  {($ Id.VSub_DollarName '$DAEMON_ARGS')}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<2>}
                )
              ]
            )
            (command.Simple
              words: [{<pidofproc>} {($ Id.VSub_DollarName '$DAEMON')}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$PIDFILE')}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: do_stop
      body: 
        (command.BraceGroup
          children: [
            (C {<start-stop-daemon>} {<--stop>} {<--quiet>} 
              {<--retry> <Id.Lit_Equals '='> <TERM/30/KILL/5>} {<--pidfile>} {($ Id.VSub_DollarName '$PIDFILE')} {<--name>} {($ Id.VSub_DollarName '$NAME')}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RETVAL)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_QMark '$?'))}
                  spids: [335]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$RETVAL'))} {<Id.Lit_Equals '='>} 
                  {<2>} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<2>}
                )
              ]
            )
            (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$PIDFILE')})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(DQ ($ Id.VSub_DollarName '$RETVAL'))}
            )
          ]
        )
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_Number '$1'))}
      arms: [
        (case_arm
          pat_list: [{<start>}]
          action: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$VERBOSE'))} 
                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>}
                )
                (C {<log_daemon_msg>} {(DQ <'Starting '> ($ Id.VSub_DollarName '$DESC'))} 
                  {(DQ ($ Id.VSub_DollarName '$NAME'))}
                )
              ]
            )
            (C {<do_start>})
            (command.Case
              to_match: {(DQ ($ Id.VSub_QMark '$?'))}
              arms: [
                (case_arm
                  pat_list: [{<0>} {<1>}]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$VERBOSE'))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<log_end_msg>} {<0>})
                      ]
                    )
                  ]
                  spids: [432 435 456 -1]
                )
                (case_arm
                  pat_list: [{<2>}]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$VERBOSE'))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<log_end_msg>} {<1>})
                      ]
                    )
                  ]
                  spids: [459 460 481 -1]
                )
              ]
            )
          ]
          spids: [389 390 487 -1]
        )
        (case_arm
          pat_list: [{<stop>}]
          action: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$VERBOSE'))} 
                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>}
                )
                (C {<log_daemon_msg>} {(DQ <'Stopping '> ($ Id.VSub_DollarName '$DESC'))} 
                  {(DQ ($ Id.VSub_DollarName '$NAME'))}
                )
              ]
            )
            (C {<do_stop>})
            (command.Case
              to_match: {(DQ ($ Id.VSub_QMark '$?'))}
              arms: [
                (case_arm
                  pat_list: [{<0>} {<1>}]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$VERBOSE'))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<log_end_msg>} {<0>})
                      ]
                    )
                  ]
                  spids: [533 536 557 -1]
                )
                (case_arm
                  pat_list: [{<2>}]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$VERBOSE'))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<log_end_msg>} {<1>})
                      ]
                    )
                  ]
                  spids: [560 561 582 -1]
                )
              ]
            )
          ]
          spids: [490 491 588 -1]
        )
        (case_arm
          pat_list: [{<status>}]
          action: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {<status_of_proc>} {(DQ ($ Id.VSub_DollarName '$DAEMON'))} 
                  {(DQ ($ Id.VSub_DollarName '$NAME'))}
                )
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Exit exit>
                  arg_word: {($ Id.VSub_QMark '$?')}
                )
              ]
            )
          ]
          spids: [591 592 618 -1]
        )
        (case_arm
          pat_list: [{<restart>} {<force-reload>}]
          action: [
            (C {<log_daemon_msg>} {(DQ <'Restarting '> ($ Id.VSub_DollarName '$DESC'))} 
              {(DQ ($ Id.VSub_DollarName '$NAME'))}
            )
            (C {<do_stop>})
            (command.Case
              to_match: {(DQ ($ Id.VSub_QMark '$?'))}
              arms: [
                (case_arm
                  pat_list: [{<0>} {<1>}]
                  action: [
                    (C {<do_start>})
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_QMark '$?'))}
                      arms: [
                        (case_arm
                          pat_list: [{<0>}]
                          action: [(C {<log_end_msg>} {<0>})]
                          spids: [669 670 676 -1]
                        )
                        (case_arm
                          pat_list: [{<1>}]
                          action: [(C {<log_end_msg>} {<1>})]
                          spids: [679 680 686 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(C {<log_end_msg>} {<1>})]
                          spids: [692 693 699 -1]
                        )
                      ]
                    )
                  ]
                  spids: [651 654 708 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<log_end_msg>} {<1>})]
                  spids: [711 712 724 -1]
                )
              ]
            )
          ]
          spids: [621 624 730 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'Usage: '> ($ Id.VSub_DollarName '$SCRIPTNAME') 
                    <' {start|stop|status|restart|force-reload}'>
                  )
                }
              ]
              redirects: [(redir.Redir op:<Id.Redir_GreatAnd '>&'> fd:-1 arg_word:{<2>})]
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<3>})
          ]
          spids: [733 734 754 -1]
        )
      ]
    )
    (C {<Id.Lit_Other ':'>})
  ]
)