(command.CommandList
  children: [
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PATH)
                  op: assign_op.Equal
                  rhs: 
                    {<'/bin'> <Id.Lit_Colon ':'> <'/sbin'> <Id.Lit_Colon ':'> <'/usr/bin'> 
                      <Id.Lit_Colon ':'> <'/usr/sbin'>
                    }
                  spids: [144]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<export>} {<PATH>})
      ]
    )
    (command.ShFunction
      name: do_purge
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<echo>} {(DQ <'purge '> ($ Id.VSub_At '$@'))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(DQ <'not implemented yet'> <Id.Lit_BadBackslash '\\'> <n>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: uncompress_page
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<pname>})
            (C {<local>} {<fname>})
            (C {<local>} {<sect>})
            (C {<local>} {<ext>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pname)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [242]
                )
              ]
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:IFS)
                      op: assign_op.Equal
                      rhs: {(SQ <.>)}
                      spids: [246]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<set>} {($ Id.VSub_DollarName '$pname')})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-lt>} {<3>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:IFS)
                              op: assign_op.Equal
                              rhs: {(DQ <' \t'>)}
                              spids: [280]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{<echo>} {<ignoring>} {($ Id.VSub_DollarName '$pname')}]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [262 276]
                )
              ]
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:fname)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [313]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<2>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fname)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$fname') <.> ($ Id.VSub_Number '$1')}
                          spids: [338]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sect)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [350]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ext)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [354]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ <' \t'>)}
                  spids: [359]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$ext'))}
              arms: [
                (case_arm
                  pat_list: [{<gz>} {<Z>}]
                  action: [
                    (BraceGroup
                      children: [
                        (command.Sentence
                          child: 
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:IFS)
                                  op: assign_op.Equal
                                  rhs: {(DQ <' \t'>)}
                                  spids: [383]
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                        (C {<set>} 
                          {
                            (command_sub
                              left_token: <Id.Left_Backtick '`'>
                              child: (C {<file>} {($ Id.VSub_DollarName '$pname')})
                            )
                          }
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$2')} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <gzip>)} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.Simple
                                  words: [
                                    {<echo>}
                                    {<moving>}
                                    {<hard>}
                                    {<link>}
                                    {($ Id.VSub_DollarName '$pname')}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '1>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<2>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (C {<mv>} {($ Id.VSub_DollarName '$pname')} 
                                  {($ Id.VSub_DollarName '$fname') <.> ($ Id.VSub_DollarName '$ext')}
                                )
                              ]
                              spids: [401 418]
                            )
                          ]
                          else_action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$2')} 
                                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <symbolic>)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Simple
                                      words: [
                                        {<echo>}
                                        {<gunzipping>}
                                        {<page>}
                                        {($ Id.VSub_DollarName '$pname')}
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '1>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:temp)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (command_sub
                                                    left_token: <Id.Left_Backtick '`'>
                                                    child: (C {<mktemp>} {<-t>} {<manager>})
                                                  )
                                                }
                                              spids: [483]
                                            )
                                          ]
                                        )
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Exit exit>
                                          arg_word: {<1>}
                                        )
                                      ]
                                    )
                                    (command.Simple
                                      words: [{<gunzip>} {<-c>} {($ Id.VSub_DollarName '$pname')}]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {($ Id.VSub_DollarName '$temp')}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (C {<chmod>} {<u> <Id.Lit_Other '+'> <w>} 
                                      {($ Id.VSub_DollarName '$pname')}
                                    )
                                    (C {<cp>} {($ Id.VSub_DollarName '$temp')} 
                                      {($ Id.VSub_DollarName '$pname')}
                                    )
                                    (C {<chmod>} {<444>} {($ Id.VSub_DollarName '$pname')})
                                    (C {<mv>} {($ Id.VSub_DollarName '$pname')} 
                                      {($ Id.VSub_DollarName '$fname') <.> 
                                        ($ Id.VSub_DollarName '$sect')
                                      }
                                    )
                                    (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$temp')})
                                  ]
                                  spids: [451 468]
                                )
                              ]
                              else_action: [
                                (command.Simple
                                  words: [
                                    {<echo>}
                                    {<skipping>}
                                    {<symlink>}
                                    {($ Id.VSub_DollarName '$pname')}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '1>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<2>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [374 377 584 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (BraceGroup
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:IFS)
                              op: assign_op.Equal
                              rhs: {(DQ <' \t'>)}
                              spids: [593]
                            )
                          ]
                        )
                        (command.Simple
                          words: [{<echo>} {<skipping>} {<file>} {($ Id.VSub_DollarName '$pname')}]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                    )
                  ]
                  spids: [587 588 613 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ <' \t'>)}
                  spids: [623]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: do_uncompress
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<i>})
            (C {<local>} {<dir>})
            (C {<local>} {<workdir>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:workdir)
                  op: assign_op.Equal
                  rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<pwd>}))}
                  spids: [664]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-d>} {($ Id.VSub_Number '$1')} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:dir)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number '$1')}
                                  spids: [705]
                                )
                              ]
                            )
                            (C {<cd>} {($ Id.VSub_DollarName '$dir')})
                            (command.ForEach
                              iter_name: i
                              iter_words: [{<Id.Lit_Star '*'>}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Case
                                      to_match: {($ Id.VSub_DollarName '$i')}
                                      arms: [
                                        (case_arm
                                          pat_list: [{<Id.Lit_Star '*'> <cat> <Id.Lit_QMark '?'>}]
                                          spids: [734 737 739 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<Id.Lit_Star '*'>}]
                                          action: [
                                            (BraceGroup
                                              children: [
                                                (command.If
                                                  arms: [
                                                    (if_arm
                                                      cond: 
                                                        (condition.Shell
                                                          commands: [
                                                            (command.Sentence
                                                              child: 
                                                                (C {<Id.Lit_LBracket '['>} {<-d>} 
                                                                  {($ Id.VSub_DollarName '$i')} {<Id.Lit_RBracket ']'>}
                                                                )
                                                              terminator: <Id.Op_Semi _>
                                                            )
                                                          ]
                                                        )
                                                      action: [
                                                        (C {<do_uncompress>} 
                                                          {($ Id.VSub_DollarName '$i')}
                                                        )
                                                      ]
                                                      spids: [751 763]
                                                    )
                                                  ]
                                                  else_action: [
                                                    (command.If
                                                      arms: [
                                                        (if_arm
                                                          cond: 
                                                            (condition.Shell
                                                              commands: [
                                                                (command.Sentence
                                                                  child: 
                                                                    (C {<Id.Lit_LBracket '['>} {<-e>} 
                                                                      {($ Id.VSub_DollarName '$i')} {<Id.Lit_RBracket ']'>}
                                                                    )
                                                                  terminator: <Id.Op_Semi _>
                                                                )
                                                              ]
                                                            )
                                                          action: [
                                                            (C {<uncompress_page>} 
                                                              {($ Id.VSub_DollarName '$i')}
                                                            )
                                                          ]
                                                          spids: [775 787]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [745 746 802 -1]
                                        )
                                      ]
                                    )
                                  ]
                                )
                            )
                            (C {<cd>} {($ Id.VSub_DollarName '$workdir')})
                          ]
                          spids: [690 702]
                        )
                      ]
                      else_action: [
                        (command.Simple
                          words: [{<echo>} {(DQ <'directory '> ($ Id.VSub_Number '$1') <' not found'>)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: so_purge_page
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<so_entries>})
            (C {<local>} {<lines>})
            (C {<local>} {<fname>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:so_entries)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<grep>} {(DQ <'^'> <Id.Lit_BadBackslash '\\'> <.so>)} 
                                {($ Id.VSub_Number '$1')}
                              )
                              (C {<wc>} {<-l>})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [874]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$so_entries')} {<-eq>} 
                              {<0>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [898 912]
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {($ Id.VSub_Number '$1')} {<contains>} {<a>} {<.so>} {<entry>}]
              redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})]
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:lines)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [{<wc>} {<-l>}]
                            redirects: [
                              (redir
                                op: <Id.Redir_Less '<'>
                                loc: (redir_loc.Fd fd:0)
                                arg: {($ Id.VSub_Number '$1')}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    }
                  spids: [950]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$lines')} {<-eq>} {<1>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:fname)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number '$1')}
                              spids: [990]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<echo>} {<replacing>} {($ Id.VSub_DollarName '$fname')} {<with>} {<a>} {<hard>} 
                      {<link>}
                    )
                    (command.Sentence
                      child: 
                        (C {<set>} 
                          {
                            (command_sub
                              left_token: <Id.Left_Backtick '`'>
                              child: (C {<cat>} {($ Id.VSub_DollarName '$fname')})
                            )
                          }
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$fname')})
                    (C {<ln>} {<'../'> ($ Id.VSub_Number '$2')} {($ Id.VSub_DollarName '$fname')})
                  ]
                  spids: [973 987]
                )
              ]
              else_action: [
                (command.Simple
                  words: [{<echo>} {<inlining>} {<page>} {($ Id.VSub_DollarName '$fname')}]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:temp)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<mktemp>} {<-t>} {<manager>})
                              )
                            }
                          spids: [1052]
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                )
                (command.Pipeline
                  children: [
                    (C {<cat>} {($ Id.VSub_DollarName '$fname')})
                    (command.Subshell
                      child: 
                        (command.CommandList
                          children: [
                            (command.Sentence
                              child: (C {<cd>} {<..>})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<soelim>})
                          ]
                        )
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName '$temp')}
                        )
                      ]
                    )
                  ]
                  negated: F
                )
                (C {<chmod>} {<u> <Id.Lit_Other '+'> <w>} {($ Id.VSub_DollarName '$fname')})
                (C {<cp>} {($ Id.VSub_DollarName '$temp')} {($ Id.VSub_DollarName '$fname')})
                (C {<chmod>} {<444>} {($ Id.VSub_DollarName '$fname')})
                (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$temp')})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: remove_so
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<pname>})
            (C {<local>} {<fname>})
            (C {<local>} {<sect>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pname)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [1171]
                )
              ]
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:IFS)
                      op: assign_op.Equal
                      rhs: {(SQ <.>)}
                      spids: [1175]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<set>} {($ Id.VSub_DollarName '$pname')})
            (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: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:IFS)
                              op: assign_op.Equal
                              rhs: {(DQ <' \t'>)}
                              spids: [1205]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{<echo>} {<ignoring>} {($ Id.VSub_DollarName '$pname')}]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [1187 1201]
                )
              ]
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:fname)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [1238]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<1>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fname)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$fname') <.> ($ Id.VSub_Number '$1')}
                          spids: [1263]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sect)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [1275]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ <' \t'>)}
                  spids: [1280]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$sect'))}
              arms: [
                (case_arm
                  pat_list: [{<gz>}]
                  action: [
                    (BraceGroup
                      children: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              words: [
                                {<echo>}
                                {<file>}
                                {($ Id.VSub_DollarName '$pname')}
                                {<already>}
                                {<gzipped>}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '1>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  ]
                  spids: [1295 1296 1317 -1]
                )
                (case_arm
                  pat_list: [{<Z>}]
                  action: [
                    (BraceGroup
                      children: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              words: [
                                {<echo>}
                                {<file>}
                                {($ Id.VSub_DollarName '$pname')}
                                {<already>}
                                {<compressed>}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '1>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  ]
                  spids: [1320 1321 1342 -1]
                )
                (case_arm
                  pat_list: [
                    {<Id.Lit_LBracket '['> <12345678ln> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>}
                  ]
                  action: [
                    (BraceGroup
                      children: [
                        (command.Sentence
                          child: 
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:IFS)
                                  op: assign_op.Equal
                                  rhs: {(DQ <' \t'>)}
                                  spids: [1353]
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                        (C {<set>} 
                          {
                            (command_sub
                              left_token: <Id.Left_Backtick '`'>
                              child: (C {<file>} {($ Id.VSub_DollarName '$pname')})
                            )
                          }
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$2')} 
                                          {<Id.Lit_Equals '='>} {(DQ <gzip>)} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.Simple
                                  words: [
                                    {<echo>}
                                    {<moving>}
                                    {<hard>}
                                    {<link>}
                                    {($ Id.VSub_DollarName '$pname')}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '1>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<2>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (C {<mv>} {($ Id.VSub_DollarName '$pname')} 
                                  {($ Id.VSub_DollarName '$pname') <.gz>}
                                )
                              ]
                              spids: [1371 1387]
                            )
                          ]
                          else_action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$2')} 
                                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <symbolic>)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Simple
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ <'removing .so\'s in  page '> 
                                            ($ Id.VSub_DollarName '$pname')
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '1>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (C {<so_purge_page>} {($ Id.VSub_DollarName '$pname')})
                                  ]
                                  spids: [1419 1436]
                                )
                              ]
                              else_action: [
                                (command.Simple
                                  words: [
                                    {<echo>}
                                    {<skipping>}
                                    {<symlink>}
                                    {($ Id.VSub_DollarName '$pname')}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '1>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<2>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [1345 1349 1488 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (BraceGroup
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:IFS)
                              op: assign_op.Equal
                              rhs: {(DQ <' \t'>)}
                              spids: [1497]
                            )
                          ]
                        )
                        (command.Simple
                          words: [{<echo>} {<skipping>} {<file>} {($ Id.VSub_DollarName '$pname')}]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                    )
                  ]
                  spids: [1491 1492 1517 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ <' \t'>)}
                  spids: [1527]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: compress_page
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<pname>})
            (C {<local>} {<fname>})
            (C {<local>} {<sect>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pname)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [1575]
                )
              ]
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:IFS)
                      op: assign_op.Equal
                      rhs: {(SQ <.>)}
                      spids: [1579]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<set>} {($ Id.VSub_DollarName '$pname')})
            (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: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:IFS)
                              op: assign_op.Equal
                              rhs: {(DQ <' \t'>)}
                              spids: [1609]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{<echo>} {<ignoring>} {($ Id.VSub_DollarName '$pname')}]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [1591 1605]
                )
              ]
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:fname)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [1642]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<1>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fname)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$fname') <.> ($ Id.VSub_Number '$1')}
                          spids: [1667]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sect)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [1679]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ <' \t'>)}
                  spids: [1684]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$sect'))}
              arms: [
                (case_arm
                  pat_list: [{<gz>}]
                  action: [
                    (BraceGroup
                      children: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              words: [
                                {<echo>}
                                {<file>}
                                {($ Id.VSub_DollarName '$pname')}
                                {<already>}
                                {<gzipped>}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '1>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  ]
                  spids: [1699 1700 1721 -1]
                )
                (case_arm
                  pat_list: [{<Z>}]
                  action: [
                    (BraceGroup
                      children: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              words: [
                                {<echo>}
                                {<file>}
                                {($ Id.VSub_DollarName '$pname')}
                                {<already>}
                                {<compressed>}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '1>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  ]
                  spids: [1724 1725 1746 -1]
                )
                (case_arm
                  pat_list: [
                    {<Id.Lit_LBracket '['> <12345678ln> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>}
                  ]
                  action: [
                    (BraceGroup
                      children: [
                        (command.Sentence
                          child: 
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:IFS)
                                  op: assign_op.Equal
                                  rhs: {(DQ <' \t'>)}
                                  spids: [1757]
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                        (C {<set>} 
                          {
                            (command_sub
                              left_token: <Id.Left_Backtick '`'>
                              child: (C {<file>} {($ Id.VSub_DollarName '$pname')})
                            )
                          }
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$2')} 
                                          {<Id.Lit_Equals '='>} {(DQ <gzip>)} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.Simple
                                  words: [
                                    {<echo>}
                                    {<moving>}
                                    {<hard>}
                                    {<link>}
                                    {($ Id.VSub_DollarName '$pname')}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '1>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<2>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (C {<mv>} {($ Id.VSub_DollarName '$pname')} 
                                  {($ Id.VSub_DollarName '$pname') <.gz>}
                                )
                              ]
                              spids: [1775 1791]
                            )
                          ]
                          else_action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$2')} 
                                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <symbolic>)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Simple
                                      words: [
                                        {<echo>}
                                        {<gzipping>}
                                        {<page>}
                                        {($ Id.VSub_DollarName '$pname')}
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '1>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:temp)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (command_sub
                                                    left_token: <Id.Left_Backtick '`'>
                                                    child: (C {<mktemp>} {<-t>} {<manager>})
                                                  )
                                                }
                                              spids: [1855]
                                            )
                                          ]
                                        )
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Exit exit>
                                          arg_word: {<1>}
                                        )
                                      ]
                                    )
                                    (command.Pipeline
                                      children: [
                                        (C {<cat>} {($ Id.VSub_DollarName '$pname')})
                                        (command.Subshell
                                          child: 
                                            (command.CommandList
                                              children: [
                                                (command.Sentence
                                                  child: (C {<cd>} {<..>})
                                                  terminator: <Id.Op_Semi _>
                                                )
                                                (C {<soelim>})
                                              ]
                                            )
                                        )
                                        (command.Simple
                                          words: [{<gzip>} {<-c>} {<-->}]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_Great '>'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {($ Id.VSub_DollarName '$temp')}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                      ]
                                      negated: F
                                    )
                                    (C {<chmod>} {<u> <Id.Lit_Other '+'> <w>} 
                                      {($ Id.VSub_DollarName '$pname')}
                                    )
                                    (C {<cp>} {($ Id.VSub_DollarName '$temp')} 
                                      {($ Id.VSub_DollarName '$pname')}
                                    )
                                    (C {<chmod>} {<444>} {($ Id.VSub_DollarName '$pname')})
                                    (C {<mv>} {($ Id.VSub_DollarName '$pname')} 
                                      {($ Id.VSub_DollarName '$pname') <.gz>}
                                    )
                                    (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$temp')})
                                  ]
                                  spids: [1823 1840]
                                )
                              ]
                              else_action: [
                                (command.Simple
                                  words: [
                                    {<echo>}
                                    {<skipping>}
                                    {<symlink>}
                                    {($ Id.VSub_DollarName '$pname')}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '1>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<2>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [1749 1753 1975 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (BraceGroup
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:IFS)
                              op: assign_op.Equal
                              rhs: {(DQ <' \t'>)}
                              spids: [1984]
                            )
                          ]
                        )
                        (command.Simple
                          words: [{<echo>} {<skipping>} {<file>} {($ Id.VSub_DollarName '$pname')}]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                    )
                  ]
                  spids: [1978 1979 2004 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ <' \t'>)}
                  spids: [2014]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: do_compress_so
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<i>})
            (C {<local>} {<dir>})
            (C {<local>} {<workdir>})
            (C {<local>} {<what>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:what)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [2059]
                )
              ]
            )
            (C {<shift>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:workdir)
                  op: assign_op.Equal
                  rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<pwd>}))}
                  spids: [2066]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-d>} {($ Id.VSub_Number '$1')} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:dir)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number '$1')}
                                  spids: [2107]
                                )
                              ]
                            )
                            (C {<cd>} {($ Id.VSub_DollarName '$dir')})
                            (command.ForEach
                              iter_name: i
                              iter_words: [{<Id.Lit_Star '*'>}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Case
                                      to_match: {($ Id.VSub_DollarName '$i')}
                                      arms: [
                                        (case_arm
                                          pat_list: [{<Id.Lit_Star '*'> <cat> <Id.Lit_QMark '?'>}]
                                          spids: [2136 2139 2141 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<Id.Lit_Star '*'>}]
                                          action: [
                                            (BraceGroup
                                              children: [
                                                (command.If
                                                  arms: [
                                                    (if_arm
                                                      cond: 
                                                        (condition.Shell
                                                          commands: [
                                                            (command.Sentence
                                                              child: 
                                                                (C {<Id.Lit_LBracket '['>} {<-d>} 
                                                                  {($ Id.VSub_DollarName '$i')} {<Id.Lit_RBracket ']'>}
                                                                )
                                                              terminator: <Id.Op_Semi _>
                                                            )
                                                          ]
                                                        )
                                                      action: [
                                                        (C {<do_compress_so>} 
                                                          {($ Id.VSub_DollarName '$what')} {($ Id.VSub_DollarName '$i')}
                                                        )
                                                      ]
                                                      spids: [2153 2165]
                                                    )
                                                  ]
                                                  else_action: [
                                                    (command.If
                                                      arms: [
                                                        (if_arm
                                                          cond: 
                                                            (condition.Shell
                                                              commands: [
                                                                (command.Sentence
                                                                  child: 
                                                                    (C {<Id.Lit_LBracket '['>} {<-e>} 
                                                                      {($ Id.VSub_DollarName '$i')} {<Id.Lit_RBracket ']'>}
                                                                    )
                                                                  terminator: <Id.Op_Semi _>
                                                                )
                                                              ]
                                                            )
                                                          action: [
                                                            (C {($ Id.VSub_DollarName '$what')} 
                                                              {($ Id.VSub_DollarName '$i')}
                                                            )
                                                          ]
                                                          spids: [2180 2192]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [2147 2148 2207 -1]
                                        )
                                      ]
                                    )
                                  ]
                                )
                            )
                            (C {<cd>} {($ Id.VSub_DollarName '$workdir')})
                          ]
                          spids: [2092 2104]
                        )
                      ]
                      else_action: [
                        (command.Simple
                          words: [{<echo>} {(DQ <'directory '> ($ Id.VSub_Number '$1') <' not found'>)}]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: ctl_usage
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<echo>} {(DQ <'usage: '> ($ Id.VSub_Number '$1') <' -compress <path> ... '>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(DQ <'       '> ($ Id.VSub_Number '$1') <' -uncompress <path> ... '>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(DQ <'       '> ($ Id.VSub_Number '$1') <' -purge <days> <path> ... '>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(DQ <'       '> ($ Id.VSub_Number '$1') <' -purge expire <path> ... '>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
        )
    )
    (command.ShFunction
      name: do_compress
      body: 
        (BraceGroup
          children: [
            (C {<do_compress_so>} {<remove_so>} {(DQ ($ Id.VSub_At '$@'))})
            (C {<do_compress_so>} {<compress_page>} {(DQ ($ Id.VSub_At '$@'))})
          ]
        )
    )
    (command.Sentence
      child: 
        (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: [
                (command.Sentence
                  child: (C {<ctl_usage>} {($ Id.VSub_Number '$0')})
                  terminator: <Id.Op_Semi _>
                )
              ]
              spids: [2371 2385]
            )
          ]
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_Number '$1'))}
      arms: [
        (case_arm
          pat_list: [{<-compress>}]
          action: [
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (C {<do_compress>} {(DQ ($ Id.VSub_At '$@'))})
          ]
          spids: [2407 2408 2420 -1]
        )
        (case_arm
          pat_list: [{<-uncompress>}]
          action: [
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (C {<do_uncompress>} {(DQ ($ Id.VSub_At '$@'))})
          ]
          spids: [2423 2424 2436 -1]
        )
        (case_arm
          pat_list: [{<-purge>}]
          action: [
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (C {<do_purge>} {(DQ ($ Id.VSub_At '$@'))})
          ]
          spids: [2439 2440 2452 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [(C {<ctl_usage>} {($ Id.VSub_Number '$0')})]
          spids: [2455 2456 2462 -1]
        )
      ]
    )
  ]
)