(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLIST='> name:FLIST)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName ROOT) <'/etc/syslist'>}
          spids: [82]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEFAULT='> name:DEFAULT)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName ROOT) <'/bin '> ($ Id.VSub_DollarName ROOT) <'/usr/bin '> 
                ($ Id.VSub_DollarName ROOT) <'/etc '> ($ Id.VSub_DollarName ROOT) <'/lib '> ($ Id.VSub_DollarName ROOT) <'/usr/lib'>
              )
            }
          spids: [86]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FOUND='> name:FOUND)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [100]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MOVOLD='> name:MOVOLD)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [104]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ECHO='> name:ECHO)
          op: assign_op.Equal
          rhs: {<echo>}
          spids: [108]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH)
          op: assign_op.Equal
          rhs: {<'/usr/bin'>}
          spids: [111]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG)
          op: assign_op.Equal
          rhs: {<off>}
          spids: [114]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE)
          op: assign_op.Equal
          rhs: {(DQ <'eval echo \'usage: install [options] file [dir1 ...]\'; exit 2'>)}
          spids: [117]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-lt>} {<2>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {($ Id.VSub_DollarName USAGE)})]
          spids: [123 137]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MFLAG='> name:MFLAG)
          op: assign_op.Equal
          rhs: {<off>}
          spids: [145]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UFLAG='> name:UFLAG)
          op: assign_op.Equal
          rhs: {<off>}
          spids: [148]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GFLAG='> name:GFLAG)
          op: assign_op.Equal
          rhs: {<off>}
          spids: [151]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MODE='> name:MODE)
          op: assign_op.Equal
          rhs: {<755>}
          spids: [155]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GRP='> name:GRP)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (C {<expr>} 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: (C {<id>})
                          right: <Id.Backtick_Right '`'>
                        )
                      )
                    } {<Id.Lit_Colon ':'>} 
                    {
                      (DQ <'.*gid=[0-9]*('> <Id.Lit_BadBackslash '\\'> <'(..*'> 
                        <Id.Lit_BadBackslash '\\'> <')) .*'>
                      )
                    }
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [158]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GROUP='> name:GROUP)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {($ Id.VSub_DollarName GRP)})
                      (C {<sed>} {<-e>} {(SQ <'s/) fsid.*//p'>)})
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [191]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OWN='> name:OWN)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (C {<expr>} 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: (C {<id>})
                          right: <Id.Backtick_Right '`'>
                        )
                      )
                    } {<Id.Lit_Colon ':'>} 
                    {
                      (DQ <'.*uid=[0-9]*('> <Id.Lit_BadBackslash '\\'> <'(..*'> 
                        <Id.Lit_BadBackslash '\\'> <')) .*'>
                      )
                    }
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [210]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OWNER='> name:OWNER)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {($ Id.VSub_DollarName OWN)})
                      (C {<sed>} {<-e>} {(SQ <'s/) .*//p'>)})
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [243]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName GROUP))} 
                  {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GROUP='> name:GROUP)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<expr>} 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: (C {<id>})
                                  right: <Id.Backtick_Right '`'>
                                )
                              )
                            } {<Id.Lit_Colon ':'>} 
                            {
                              (DQ <'.*gid='> <Id.Lit_BadBackslash '\\'> <'([0-9]*'> 
                                <Id.Lit_BadBackslash '\\'> <').*'>
                              )
                            }
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [277]
                )
              ]
              redirects: []
            )
          ]
          spids: [262 274]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName OWNER))} 
                  {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OWNER='> name:OWNER)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<expr>} 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: (C {<id>})
                                  right: <Id.Backtick_Right '`'>
                                )
                              )
                            } {<Id.Lit_Colon ':'>} 
                            {
                              (DQ <'.*uid='> <Id.Lit_BadBackslash '\\'> <'([0-9]*'> 
                                <Id.Lit_BadBackslash '\\'> <').*'>
                              )
                            }
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [327]
                )
              ]
              redirects: []
            )
          ]
          spids: [312 324]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OWNER))} {<Id.Lit_Equals '='>} 
                  {<root>} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ROOTFLAG='> name:ROOTFLAG)
                  op: assign_op.Equal
                  rhs: {<on>}
                  spids: [379]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OWNER='> name:OWNER)
                  op: assign_op.Equal
                  rhs: {<bin>}
                  spids: [383]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GROUP='> name:GROUP)
                  op: assign_op.Equal
                  rhs: {<bin>}
                  spids: [387]
                )
              ]
              redirects: []
            )
          ]
          spids: [362 376]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ROOTFLAG='> name:ROOTFLAG)
              op: assign_op.Equal
              rhs: {<off>}
              spids: [393]
            )
          ]
          redirects: []
        )
      ]
      redirects: []
    )
    (command.ForEach
      iter_names: [i]
      iterable: (for_iter.Words words:[{($ Id.VSub_Star '*')}])
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName FLAG)} {<Id.Lit_Equals '='>} 
                          {<on>} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName i)}
                      arms: [
                        (case_arm
                          pat_list: [{<-> <Id.Lit_Star '*'>}]
                          action: [
                            (C {<echo>} 
                              {
                                (DQ 
                                  <
'install: The -c, -f, -n options each require a directory following!'
                                  >
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [434 436 448 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG)
                                  op: assign_op.Equal
                                  rhs: {<off>}
                                  spids: [454]
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [451 452 459 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [411 424]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName i)}
              arms: [
                (case_arm
                  pat_list: [{<-c>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName ARG)} 
                                  {<Id.Lit_Equals '='>} {<x-d>} {<-o>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-f>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'install: -c dir: illegal option with '> 
                                  ($ Id.VSub_DollarName ARG) <' option!'>
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [478 501]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName arg)} 
                                  {<Id.Lit_Equals '='>} {<x-i>} {<-o>} {<x> ($ Id.VSub_DollarName arg)} {<Id.Lit_Equals '='>} {<x-o>} {<-o>} 
                                  {<x> ($ Id.VSub_DollarName arg)} {<Id.Lit_Equals '='>} {<x-n>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'install: -c dir: illegal option with '> 
                                  ($ Id.VSub_DollarName arg) <' option!'>
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [518 550]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [(C {<test>} {($ Id.VSub_Pound '#')} {<-lt>} {<3>})]
                            )
                          action: [
                            (C {<echo>} {(DQ <'install: -c option must have at least 3 args!'>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [567 578]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'direct='> name:direct)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number 2)}
                              spids: [596]
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG)
                              op: assign_op.Equal
                              rhs: {<on>}
                              spids: [600]
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARG='> name:ARG)
                              op: assign_op.Equal
                              rhs: {<-c>}
                              spids: [604]
                            )
                          ]
                          redirects: []
                        )
                        (command.Sentence
                          child: (C {<shift>})
                          terminator: <Id.Op_Semi _>
                        )
                        (C {<shift>})
                      ]
                      redirects: []
                    )
                  ]
                  spids: [475 476 615 -1]
                )
                (case_arm
                  pat_list: [{<-f>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName ARG)} 
                                  {<Id.Lit_Equals '='>} {<x-d>} {<-o>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-c>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'install: -f dir: illegal option with '> 
                                  ($ Id.VSub_DollarName ARG) <' option!'>
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [621 644]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName arg)} 
                                  {<Id.Lit_Equals '='>} {<x-i>} {<-o>} {<x> ($ Id.VSub_DollarName arg)} {<Id.Lit_Equals '='>} {<x-n>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'install: -f dir: illegal option with '> 
                                  ($ Id.VSub_DollarName arg) <' option!'>
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [661 684]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [(C {<test>} {($ Id.VSub_Pound '#')} {<-lt>} {<3>})]
                            )
                          action: [
                            (C {<echo>} {(DQ <'install: -f option must have at least 3 args!'>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [701 712]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'direct='> name:direct)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number 2)}
                              spids: [730]
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG)
                              op: assign_op.Equal
                              rhs: {<on>}
                              spids: [734]
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARG='> name:ARG)
                              op: assign_op.Equal
                              rhs: {<-f>}
                              spids: [738]
                            )
                          ]
                          redirects: []
                        )
                        (command.Sentence
                          child: (C {<shift>})
                          terminator: <Id.Op_Semi _>
                        )
                        (C {<shift>})
                      ]
                      redirects: []
                    )
                  ]
                  spids: [618 619 749 -1]
                )
                (case_arm
                  pat_list: [{<-i>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName ARG)} 
                                  {<Id.Lit_Equals '='>} {<x-d>} {<-o>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-c>} {<-o>} 
                                  {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-f>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'install: -i: illegal option with '> ($ Id.VSub_DollarName ARG) 
                                  <' option!'>
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [755 787]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [(C {<test>} {($ Id.VSub_Pound '#')} {<-lt>} {<3>})]
                            )
                          action: [
                            (C {<echo>} {(DQ <'install: -i option requires at least 3 args!'>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [804 815]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEFAULT='> name:DEFAULT)
                              op: assign_op.Equal
                              rhs: {(DQ )}
                              spids: [833]
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arg='> name:arg)
                              op: assign_op.Equal
                              rhs: {<-i>}
                              spids: [838]
                            )
                          ]
                          redirects: []
                        )
                        (C {<shift>})
                      ]
                      redirects: []
                    )
                  ]
                  spids: [752 753 846 -1]
                )
                (case_arm
                  pat_list: [{<-o>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName ARG)} 
                                  {<Id.Lit_Equals '='>} {<x-d>} {<-o>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-c>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'install: -o: illegal option with '> ($ Id.VSub_DollarName ARG) 
                                  <' option!'>
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [852 875]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [(C {<test>} {($ Id.VSub_Pound '#')} {<-lt>} {<2>})]
                            )
                          action: [(C {($ Id.VSub_DollarName USAGE)})]
                          spids: [892 903]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MOVOLD='> name:MOVOLD)
                              op: assign_op.Equal
                              rhs: {<yes>}
                              spids: [912]
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arg='> name:arg)
                              op: assign_op.Equal
                              rhs: {<-o>}
                              spids: [916]
                            )
                          ]
                          redirects: []
                        )
                        (C {<shift>})
                      ]
                      redirects: []
                    )
                  ]
                  spids: [849 850 924 -1]
                )
                (case_arm
                  pat_list: [{<-n>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName ARG)} 
                                  {<Id.Lit_Equals '='>} {<x-d>} {<-o>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-c>} {<-o>} 
                                  {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-f>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'install: -n dir: illegal option with '> 
                                  ($ Id.VSub_DollarName ARG) <' option!'>
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [930 962]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [(C {<test>} {($ Id.VSub_Pound '#')} {<-lt>} {<3>})]
                            )
                          action: [
                            (C {<echo>} {(DQ <'install: -n option requires at least 3 args!'>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [979 990]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LASTRES='> name:LASTRES)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number 2)}
                              spids: [1008]
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG)
                              op: assign_op.Equal
                              rhs: {<on>}
                              spids: [1012]
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FOUND='> name:FOUND)
                              op: assign_op.Equal
                              rhs: {<n>}
                              spids: [1016]
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arg='> name:arg)
                              op: assign_op.Equal
                              rhs: {<-n>}
                              spids: [1020]
                            )
                          ]
                          redirects: []
                        )
                        (command.Sentence
                          child: (C {<shift>})
                          terminator: <Id.Op_Semi _>
                        )
                        (C {<shift>})
                      ]
                      redirects: []
                    )
                  ]
                  spids: [927 928 1031 -1]
                )
                (case_arm
                  pat_list: [{<-d>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName ARG)} 
                                  {<Id.Lit_Equals '='>} {<x-c>} {<-o>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-f>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'install: -d: illegal option with '> ($ Id.VSub_DollarName ARG) 
                                  <' option!'>
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [1037 1060]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName arg)} 
                                  {<Id.Lit_Equals '='>} {<x-i>} {<-o>} {<x> ($ Id.VSub_DollarName arg)} {<Id.Lit_Equals '='>} {<x-o>} {<-o>} 
                                  {<x> ($ Id.VSub_DollarName arg)} {<Id.Lit_Equals '='>} {<x-n>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'install: -d: illegal option with '> ($ Id.VSub_DollarName arg) 
                                  <' option!'>
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [1077 1109]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARG='> name:ARG)
                              op: assign_op.Equal
                              rhs: {<-d>}
                              spids: [1129]
                            )
                          ]
                          redirects: []
                        )
                        (C {<shift>})
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1034 1035 1137 -1]
                )
                (case_arm
                  pat_list: [{<-s>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [(C {<test>} {($ Id.VSub_Pound '#')} {<-lt>} {<2>})]
                            )
                          action: [(C {($ Id.VSub_DollarName USAGE)})]
                          spids: [1143 1154]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ECHO='> name:ECHO)
                              op: assign_op.Equal
                              rhs: {<Id.Lit_Colon ':'>}
                              spids: [1163]
                            )
                          ]
                          redirects: []
                        )
                        (C {<shift>})
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1140 1141 1171 -1]
                )
                (case_arm
                  pat_list: [{<-u>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName ROOTFLAG)} 
                                  {<Id.Lit_Equals '='>} {<off>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} {(DQ <'install: -u option available only to root -- ignored'>)})
                          ]
                          spids: [1177 1190]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OWNER='> name:OWNER)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number 2)}
                              spids: [1203]
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UFLAG='> name:UFLAG)
                              op: assign_op.Equal
                              rhs: {<on>}
                              spids: [1207]
                            )
                          ]
                          redirects: []
                        )
                        (C {($ Id.VSub_DollarName ECHO)} {<new>} {<owner>} {<is>} 
                          {($ Id.VSub_DollarName OWNER)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG)
                          op: assign_op.Equal
                          rhs: {<on>}
                          spids: [1225]
                        )
                      ]
                      redirects: []
                    )
                    (command.Sentence
                      child: (C {<shift>})
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [1174 1175 1233 -1]
                )
                (case_arm
                  pat_list: [{<-g>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName ROOTFLAG)} 
                                  {<Id.Lit_Equals '='>} {<off>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} {(DQ <'install: -g option available only to root -- ignored'>)})
                          ]
                          spids: [1239 1252]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GROUP='> name:GROUP)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number 2)}
                              spids: [1265]
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GFLAG='> name:GFLAG)
                              op: assign_op.Equal
                              rhs: {<on>}
                              spids: [1269]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG)
                          op: assign_op.Equal
                          rhs: {<on>}
                          spids: [1276]
                        )
                      ]
                      redirects: []
                    )
                    (command.Sentence
                      child: (C {<shift>})
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [1236 1237 1284 -1]
                )
                (case_arm
                  pat_list: [{<-m>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MODE='> name:MODE)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 2)}
                          spids: [1290]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MFLAG='> name:MFLAG)
                          op: assign_op.Equal
                          rhs: {<on>}
                          spids: [1294]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG)
                          op: assign_op.Equal
                          rhs: {<on>}
                          spids: [1298]
                        )
                      ]
                      redirects: []
                    )
                    (command.Sentence
                      child: (C {<shift>})
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [1287 1288 1306 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                  spids: [1309 1310 1313 -1]
                )
              ]
              redirects: []
            )
          ]
        )
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-d>} 
                  {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName i)} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName i)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.Lit_Equals '='>} 
                                  {<0>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {($ Id.VSub_DollarName ECHO)} 
                              {(DQ <'directory '> ($ Id.VSub_DollarName i) <' created'>)}
                            )
                            (C {<chgrp>} {($ Id.VSub_DollarName GROUP)} {($ Id.VSub_DollarName i)})
                            (C {<chown>} {($ Id.VSub_DollarName OWNER)} {($ Id.VSub_DollarName i)})
                            (C {<chmod>} {($ Id.VSub_DollarName MODE)} {($ Id.VSub_DollarName i)})
                          ]
                          spids: [1361 1374]
                        )
                      ]
                      else_action: [
                        (C {<echo>} {(DQ <'install: mkdir '> ($ Id.VSub_DollarName i) <' failed '>)})
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1338 1351]
                )
              ]
              else_action: [
                (C {<chgrp>} {($ Id.VSub_DollarName GROUP)} {($ Id.VSub_DollarName i)})
                (C {<chown>} {($ Id.VSub_DollarName OWNER)} {($ Id.VSub_DollarName i)})
                (C {<chmod>} {($ Id.VSub_DollarName MODE)} {($ Id.VSub_DollarName i)})
              ]
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
          ]
          spids: [1322 1335]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FILEP='> name:FILEP)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName i)}
          spids: [1454]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FILE='> name:FILE)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {($ Id.VSub_DollarName i)})
                      (C {<sed>} {<-e>} {(DQ <'s/.*'> <Id.Lit_BadBackslash '\\'> <'///'>)})
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [1457]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-c>} 
                  {<-o>} {<x> ($ Id.VSub_DollarName ARG)} {<Id.Lit_Equals '='>} {<x-f>} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.Case
              to_match: {($ Id.VSub_Number 2)}
              arms: [
                (case_arm
                  pat_list: [{<-> <Id.Lit_Star '*'>}]
                  action: [(C {($ Id.VSub_DollarName USAGE)})]
                  spids: [1512 1514 1518 -1]
                )
                (case_arm
                  pat_list: [{(DQ )}]
                  action: [(C {<Id.Lit_Colon ':'>})]
                  spids: [1521 1523 1527 -1]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<test>} {<-f>} 
                          {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)} {<-o>} {<-f>} 
                          {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) <'/'> 
                            ($ Id.VSub_DollarName FILE)
                          }
                        )
                      ]
                    )
                  action: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName ARG)}
                      arms: [
                        (case_arm
                          pat_list: [{<-c>}]
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'install: '> ($ Id.VSub_DollarName FILE) <' already exists in '> 
                                  ($ Id.VSub_DollarName direct)
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [1564 1565 1580 -1]
                        )
                        (case_arm
                          pat_list: [{<-f>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GRP='> name:GRP)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<ls>} {<-l>} 
                                                {($ Id.VSub_DollarName direct) <'/'> 
                                                  ($ Id.VSub_DollarName FILE)
                                                }
                                              )
                                              (C {<awk>} {(SQ <'{print $4}'>)})
                                            ]
                                            negated: F
                                            stderr_indices: []
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [1586]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OWN='> name:OWN)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<ls>} {<-l>} 
                                                {($ Id.VSub_DollarName direct) <'/'> 
                                                  ($ Id.VSub_DollarName FILE)
                                                }
                                              )
                                              (C {<awk>} {(SQ <'{print $3}'>)})
                                            ]
                                            negated: F
                                            stderr_indices: []
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [1608]
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MOVOLD))} 
                                          {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<mv>} {<-f>} 
                                      {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)} {($ Id.VSub_DollarName direct) <'/OLD'> ($ Id.VSub_DollarName FILE)}
                                    )
                                    (C {<cp>} 
                                      {($ Id.VSub_DollarName direct) <'/OLD'> 
                                        ($ Id.VSub_DollarName FILE)
                                      } {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)}
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} 
                                                  {<Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>}
                                                )
                                              ]
                                            )
                                          action: [
                                            (C {($ Id.VSub_DollarName ECHO)} 
                                              {
                                                (DQ ($ Id.VSub_DollarName FILE) <' moved to '> 
                                                  ($ Id.VSub_DollarName direct) <'/OLD'> ($ Id.VSub_DollarName FILE)
                                                )
                                              }
                                            )
                                          ]
                                          spids: [1672 1685]
                                        )
                                      ]
                                      else_action: [
                                        (C {<echo>} 
                                          {
                                            (DQ <'install: mv '> ($ Id.VSub_DollarName direct) <'/OLD'> 
                                              ($ Id.VSub_DollarName FILE) <' '> ($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) <' failed'>
                                            )
                                          }
                                        )
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Exit exit>
                                          arg_word: {<2>}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [1630 1645]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (C {<cp>} {($ Id.VSub_DollarName FILEP)} 
                                          {($ Id.VSub_DollarName direct) <'/'> 
                                            ($ Id.VSub_DollarName FILE)
                                          }
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<chgrp>} {($ Id.VSub_DollarName GRP)} 
                                      {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)}
                                    )
                                    (C {<chown>} {($ Id.VSub_DollarName OWN)} 
                                      {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)}
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(DQ ($ Id.VSub_DollarName GFLAG))} {<Id.Lit_Equals '='>} {<on>} {<Id.Lit_RBracket ']'>}
                                                )
                                              ]
                                            )
                                          action: [
                                            (C {<chgrp>} {($ Id.VSub_DollarName GROUP)} 
                                              {($ Id.VSub_DollarName direct) <'/'> 
                                                ($ Id.VSub_DollarName FILE)
                                              }
                                            )
                                          ]
                                          spids: [1761 1776]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(DQ ($ Id.VSub_DollarName MFLAG))} {<Id.Lit_Equals '='>} {<on>} {<Id.Lit_RBracket ']'>}
                                                )
                                              ]
                                            )
                                          action: [
                                            (C {<chmod>} {($ Id.VSub_DollarName MODE)} 
                                              {($ Id.VSub_DollarName direct) <'/'> 
                                                ($ Id.VSub_DollarName FILE)
                                              }
                                            )
                                          ]
                                          spids: [1792 1807]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(DQ ($ Id.VSub_DollarName UFLAG))} {<Id.Lit_Equals '='>} {<on>} {<Id.Lit_RBracket ']'>}
                                                )
                                              ]
                                            )
                                          action: [
                                            (C {<chown>} {($ Id.VSub_DollarName OWNER)} 
                                              {($ Id.VSub_DollarName direct) <'/'> 
                                                ($ Id.VSub_DollarName FILE)
                                              }
                                            )
                                          ]
                                          spids: [1822 1837]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                    (C {($ Id.VSub_DollarName ECHO)} 
                                      {
                                        (DQ ($ Id.VSub_DollarName FILEP) <' installed as '> 
                                          ($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)
                                        )
                                      }
                                    )
                                  ]
                                  spids: [1728 1739]
                                )
                              ]
                              else_action: [
                                (C {<echo>} 
                                  {
                                    (DQ <'install: cp '> ($ Id.VSub_DollarName FILEP) <' '> 
                                      ($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) <' failed '>
                                    )
                                  }
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Exit exit>
                                  arg_word: {<2>}
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                            )
                          ]
                          spids: [1583 1584 1889 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1533 1554]
                )
              ]
              else_action: [
                (C {<cp>} {($ Id.VSub_DollarName FILEP)} 
                  {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)}
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.Lit_Equals '='>} 
                              {<0>} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (C {($ Id.VSub_DollarName ECHO)} 
                          {
                            (DQ ($ Id.VSub_DollarName FILEP) <' installed as '> 
                              ($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)
                            )
                          }
                        )
                        (C {<chgrp>} {($ Id.VSub_DollarName GROUP)} 
                          {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)}
                        )
                        (C {<chown>} {($ Id.VSub_DollarName OWNER)} 
                          {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)}
                        )
                        (C {<chmod>} {($ Id.VSub_DollarName MODE)} 
                          {($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE)}
                        )
                      ]
                      spids: [1907 1920]
                    )
                  ]
                  else_action: [
                    (C {<echo>} 
                      {
                        (DQ <'install: cp '> ($ Id.VSub_DollarName FILEP) <' '> 
                          ($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) <' failed '>
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<2>}
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
          ]
          spids: [1480 1502]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<shift>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PUTHERE='> name:PUTHERE)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [1996]
        )
      ]
      redirects: []
    )
    (command.ForEach
      iter_names: [i]
      iterable: (for_iter.Words words:[{($ Id.VSub_Star '*')}])
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {($ Id.VSub_DollarName i)}
              arms: [
                (case_arm
                  pat_list: [{<-> <Id.Lit_Star '*'>}]
                  action: [(C {($ Id.VSub_DollarName USAGE)})]
                  spids: [2018 2020 2024 -1]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PUTHOLD='> name:PUTHOLD)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<find>} {($ Id.VSub_DollarName i)} {<-follow>} {<-name>} 
                            {($ Id.VSub_DollarName FILE)} {<-type>} {<f>} {<-print>}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2030]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PUTHERE='> name:PUTHERE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<expr>} 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: (C {<echo>} {($ Id.VSub_DollarName PUTHOLD)})
                                  right: <Id.Backtick_Right '`'>
                                )
                              )
                            } {<Id.Lit_Colon ':'>} {(SQ <'\\([^ ]*\\)'>)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2052]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName PUTHERE))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                  spids: [2084 2101]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
        )
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {<-r>} {($ Id.VSub_DollarName FLIST)} {<-a>} 
                  {(DQ ($ Id.VSub_DollarName PUTHERE))} {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PUTHERE='> name:PUTHERE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<grep>} {(DQ <'/'> (${ Id.VSub_Name FILE) <Id.Lit_Dollar '$'>)} 
                                {($ Id.VSub_DollarName FLIST)}
                              )
                              (C {<sed>} {<-n>} {<-e>} {(SQ <1p>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2134]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName PUTHERE))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<-a>} {(DQ ($ Id.VSub_DollarName ROOT))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PUTHERE='> name:PUTHERE)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name ROOT) (${ Id.VSub_Name PUTHERE)}
                          spids: [2196]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2164 2193]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          spids: [2110 2131]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName PUTHERE))} {<Id.Lit_Equals '='>} {(DQ )} 
                  {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.ForEach
              iter_names: [i]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName DEFAULT)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PUTHOLD='> name:PUTHOLD)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (C {<find>} {($ Id.VSub_DollarName i)} {<-follow>} {<-name>} 
                                    {($ Id.VSub_DollarName FILE)} {<-type>} {<f>} {<-print>}
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [2239]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PUTHERE='> name:PUTHERE)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (C {<expr>} 
                                    {
                                      (DQ 
                                        (command_sub
                                          left_token: <Id.Left_Backtick '`'>
                                          child: (C {<echo>} {($ Id.VSub_DollarName PUTHOLD)})
                                          right: <Id.Backtick_Right '`'>
                                        )
                                      )
                                    } {<Id.Lit_Colon ':'>} {(SQ <'\\([^ ]*\\)'>)}
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [2261]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName PUTHERE))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                          spids: [2293 2310]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          spids: [2209 2224]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName PUTHERE))} 
                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GRP='> name:GRP)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<ls>} {<-l>} {($ Id.VSub_DollarName PUTHERE)})
                              (C {<awk>} {(SQ <'{print $4}'>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2341]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OWN='> name:OWN)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<ls>} {<-l>} {($ Id.VSub_DollarName PUTHERE)})
                              (C {<awk>} {(SQ <'{print $3}'>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2361]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MOVOLD))} 
                          {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'old='> name:old)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<echo>} {($ Id.VSub_DollarName PUTHERE)})
                                      (C {<sed>} {<-e>} 
                                        {
                                          (DQ <'s/'> <Id.Lit_BadBackslash '\\'> <'/[^'> 
                                            <Id.Lit_BadBackslash '\\'> <'/]*'> <Id.Lit_Dollar '$'> <'//'>
                                          )
                                        }
                                      )
                                    ]
                                    negated: F
                                    stderr_indices: []
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [2399]
                        )
                      ]
                      redirects: []
                    )
                    (C {<mv>} {<-f>} {($ Id.VSub_DollarName PUTHERE)} 
                      {($ Id.VSub_DollarName old) <'/OLD'> ($ Id.VSub_DollarName FILE)}
                    )
                    (C {<cp>} {($ Id.VSub_DollarName old) <'/OLD'> ($ Id.VSub_DollarName FILE)} 
                      {($ Id.VSub_DollarName PUTHERE)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.Lit_Equals '='>} 
                                  {<0>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {($ Id.VSub_DollarName ECHO)} 
                              {
                                (DQ <'old '> ($ Id.VSub_DollarName FILE) <' moved to '> 
                                  ($ Id.VSub_DollarName old) <'/OLD'> ($ Id.VSub_DollarName FILE)
                                )
                              }
                            )
                          ]
                          spids: [2449 2462]
                        )
                      ]
                      else_action: [
                        (C {<echo>} 
                          {
                            (DQ <'install: cp '> ($ Id.VSub_DollarName direct) <'/OLD'> 
                              ($ Id.VSub_DollarName FILE) <' '> ($ Id.VSub_DollarName direct) <'/'> ($ Id.VSub_DollarName FILE) <' failed'>
                            )
                          }
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Exit exit>
                          arg_word: {<2>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2381 2396]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FOUND='> name:FOUND)
                  op: assign_op.Equal
                  rhs: {<y>}
                  spids: [2506]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<cp>} {($ Id.VSub_DollarName FILEP)} {($ Id.VSub_DollarName PUTHERE)})
                      ]
                    )
                  action: [
                    (C {<chgrp>} {($ Id.VSub_DollarName GRP)} {($ Id.VSub_DollarName PUTHERE)})
                    (C {<chown>} {($ Id.VSub_DollarName OWN)} {($ Id.VSub_DollarName PUTHERE)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName GFLAG))} 
                                  {<Id.Lit_Equals '='>} {<on>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<chgrp>} {($ Id.VSub_DollarName GROUP)} {($ Id.VSub_DollarName PUTHERE)})
                          ]
                          spids: [2537 2552]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MFLAG))} 
                                  {<Id.Lit_Equals '='>} {<on>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<chmod>} {($ Id.VSub_DollarName MODE)} {($ Id.VSub_DollarName PUTHERE)})
                          ]
                          spids: [2566 2581]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName UFLAG))} 
                                  {<Id.Lit_Equals '='>} {<on>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<chown>} {($ Id.VSub_DollarName OWNER)} {($ Id.VSub_DollarName PUTHERE)})
                          ]
                          spids: [2594 2609]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {($ Id.VSub_DollarName ECHO)} 
                      {
                        (DQ ($ Id.VSub_DollarName FILEP) <' installed as '> 
                          ($ Id.VSub_DollarName PUTHERE)
                        )
                      }
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Break break>)
                  ]
                  spids: [2510 2519]
                )
              ]
              else_action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>})]
              redirects: []
            )
          ]
          spids: [2322 2338]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName FOUND)}
      arms: [
        (case_arm
          pat_list: [{(DQ )}]
          action: [
            (C {<echo>} {(DQ <'install: '> ($ Id.VSub_DollarName FILE) <' was not found anywhere!'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>})
          ]
          spids: [2655 2657 2671 -1]
        )
        (case_arm
          pat_list: [{<y>}]
          action: [(C {<Id.Lit_Colon ':'>})]
          spids: [2674 2675 2679 -1]
        )
        (case_arm
          pat_list: [{<n>}]
          action: [
            (C {<cp>} {($ Id.VSub_DollarName FILEP)} 
              {($ Id.VSub_DollarName LASTRES) <'/'> ($ Id.VSub_DollarName FILE)}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.Lit_Equals '='>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (C {($ Id.VSub_DollarName ECHO)} 
                      {
                        (DQ ($ Id.VSub_DollarName FILEP) <' installed as '> 
                          ($ Id.VSub_DollarName LASTRES) <'/'> ($ Id.VSub_DollarName FILE) <' by default!'>
                        )
                      }
                    )
                    (C {<cd>} {($ Id.VSub_DollarName LASTRES)})
                    (C {<chgrp>} {($ Id.VSub_DollarName GROUP)} {($ Id.VSub_DollarName FILE)})
                    (C {<chown>} {($ Id.VSub_DollarName OWNER)} {($ Id.VSub_DollarName FILE)})
                    (C {<chmod>} {($ Id.VSub_DollarName MODE)} {($ Id.VSub_DollarName FILE)})
                  ]
                  spids: [2694 2707]
                )
              ]
              else_action: [
                (C {<echo>} 
                  {
                    (DQ <'install: cp '> ($ Id.VSub_DollarName FILEP) <' '> 
                      ($ Id.VSub_DollarName LASTRES) <'/'> ($ Id.VSub_DollarName FILE) <' failed'>
                    )
                  }
                )
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>})
              ]
              redirects: []
            )
          ]
          spids: [2682 2683 2770 -1]
        )
      ]
      redirects: []
    )
  ]
)