(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PROGRAM)
          op: assign_op.Equal
          rhs: {<libtool>}
          spids: [83]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PACKAGE)
          op: assign_op.Equal
          rhs: {<libtool>}
          spids: [86]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:VERSION)
          op: assign_op.Equal
          rhs: {(DQ <'2.4.6 Debian-2.4.6-0.1'>)}
          spids: [89]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:package_revision)
          op: assign_op.Equal
          rhs: {<2.4.6>}
          spids: [94]
        )
      ]
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name AUTOCONF>
          suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{(DQ <autoconf>)})
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name AUTOMAKE>
          suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{(DQ <automake>)})
        )
      }
    )
    (command.Sentence
      child: 
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:scriptversion)
              op: assign_op.Equal
              rhs: {<2015-01-20.17>}
              spids: [182]
            )
          ]
        )
      terminator: <Id.Op_Semi _>
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DUALCASE)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [308]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<export>} {<DUALCASE>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {<-n>} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: <Id.VSub_Name ZSH_VERSION>
                                suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<set>})
                              )
                            )
                          }
                        )
                        (command.Subshell
                          child: (C {<emulate>} {<sh>})
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                            (redir
                              op: <Id.Redir_GreatAnd '2>&'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<1>}
                            )
                          ]
                        )
                      ]
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<Id.Lit_Colon ':'>})
            (C {<emulate>} {<sh>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:NULLCMD)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_Colon ':'>}
                  spids: [358]
                )
              ]
            )
            (C {<alias>} {<-g>} {(SQ <'${1+"$@"}'>) <Id.Lit_Equals '='> (SQ <'"$@"'>)})
            (C {<setopt>} {<NO_GLOB_SUBST>})
          ]
          spids: [319 348]
        )
      ]
      else_action: [
        (command.Case
          to_match: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Subshell
                    child: (C {<set>} {<-o>})
                    redirects: [
                      (redir
                        op: <Id.Redir_Great '2>'>
                        loc: (redir_loc.Fd fd:2)
                        arg: {<'/dev/null'>}
                      )
                    ]
                  )
              )
            }
          arms: [
            (case_arm
              pat_list: [{<Id.Lit_Star '*'> <posix> <Id.Lit_Star '*'>}]
              action: [(C {<set>} {<-o>} {<posix>})]
              spids: [407 410 418 -1]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_G_user_locale)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [428]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_G_safe_locale)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [430]
        )
      ]
    )
    (command.ForEach
      iter_name: _G_var
      iter_words: [{<LANG>} {<LANGUAGE>} {<LC_ALL>} {<LC_CTYPE>} {<LC_COLLATE>} {<LC_MESSAGES>}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {<eval>} 
              {
                (DQ <'if test set = '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{'> ($ Id.VSub_DollarName '$_G_var') <'+set}'> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'; then\n'> <'          save_'> ($ Id.VSub_DollarName '$_G_var') <'='> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) ($ Id.VSub_DollarName '$_G_var') <'\n'> <'          '> ($ Id.VSub_DollarName '$_G_var') <'=C\n'> 
                  <'\t  export '> ($ Id.VSub_DollarName '$_G_var') <'\n'> <'\t  _G_user_locale='> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$_G_var') <'='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <save_> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'_G_var; '> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <_G_user_locale> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> 
                  <'\t  _G_safe_locale='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$_G_var') <'=C; '> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <_G_safe_locale> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\tfi'>
                )
              }
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Subshell
          child: (C {<unset>} {<CDPATH>})
          redirects: [
            (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})
            (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
          ]
        )
        (C {<unset>} {<CDPATH>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sp)
          op: assign_op.Equal
          rhs: {(SQ <' '>)}
          spids: [528]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:nl)
          op: assign_op.Equal
          rhs: {(SQ <'\n'>)}
          spids: [533]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:IFS)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$sp') <'\t'> ($ Id.VSub_DollarName '$nl'))}
          spids: [538]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name PATH_SEPARATOR>
                            suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<set>})
                          )
                        )
                      } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<set>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PATH_SEPARATOR)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_Colon ':'>}
                  spids: [570]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.Subshell
                  child: 
                    (command.CommandList
                      children: [
                        (command.Sentence
                          child: 
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:PATH)
                                  op: assign_op.Equal
                                  rhs: {(SQ <'/bin;/bin'>)}
                                  spids: [575]
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                        (command.Sentence
                          child: 
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:FPATH)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$PATH')}
                                  spids: [581]
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                        (C {<sh>} {<-c>} {<Id.Lit_Colon ':'>})
                      ]
                    )
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                  ]
                )
                (BraceGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Subshell
                          child: 
                            (command.CommandList
                              children: [
                                (command.Sentence
                                  child: 
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:PATH)
                                          op: assign_op.Equal
                                          rhs: {(SQ <'/bin:/bin'>)}
                                          spids: [604]
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                                (command.Sentence
                                  child: 
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:FPATH)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$PATH')}
                                          spids: [610]
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                                (C {<sh>} {<-c>} {<Id.Lit_Colon ':'>})
                              ]
                            )
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                            (redir
                              op: <Id.Redir_GreatAnd '2>&'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<1>}
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:PATH_SEPARATOR)
                              op: assign_op.Equal
                              rhs: {(SQ <';'>)}
                              spids: [630]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [549 567]
        )
      ]
    )
    (command.ShFunction
      name: func_executable_p
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-f>} {(DQ ($ Id.VSub_Number '$1'))})
                (C {<test>} {<-x>} {(DQ ($ Id.VSub_Number '$1'))})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_path_progs
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_progs_list)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [731]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_check_func)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [735]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_PATH)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Number 3>
                        suffix_op: 
                          (suffix_op.Unary
                            tok: <Id.VTest_Hyphen ->
                            arg_word: {(DQ ($ Id.VSub_DollarName '$PATH'))}
                          )
                      )
                    }
                  spids: [739]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_path_prog_max)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [750]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_path_prog_found)
                  op: assign_op.Equal
                  rhs: {<false>}
                  spids: [754]
                )
              ]
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:_G_save_IFS)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$IFS')}
                      spids: [758]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name PATH_SEPARATOR>
                        suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<':'>})
                      )
                    }
                  spids: [762]
                )
              ]
            )
            (command.ForEach
              iter_name: _G_dir
              iter_words: [{($ Id.VSub_DollarName '$_G_PATH')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:IFS)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$_G_save_IFS')}
                          spids: [782]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$_G_dir'))})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:_G_dir)
                              op: assign_op.Equal
                              rhs: {<.>}
                              spids: [796]
                            )
                          ]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: _G_prog_name
                      iter_words: [{($ Id.VSub_DollarName '$_G_progs_list')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ForEach
                              iter_name: _exeext
                              iter_words: [{(SQ )} {<.EXE>}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:_G_path_prog)
                                          op: assign_op.Equal
                                          rhs: 
                                            {($ Id.VSub_DollarName '$_G_dir') <'/'> 
                                              ($ Id.VSub_DollarName '$_G_prog_name') ($ Id.VSub_DollarName '$_exeext')
                                            }
                                          spids: [827]
                                        )
                                      ]
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (C {<func_executable_p>} 
                                          {(DQ ($ Id.VSub_DollarName '$_G_path_prog'))}
                                        )
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Continue continue>
                                        )
                                      ]
                                    )
                                    (command.Case
                                      to_match: 
                                        {
                                          (command_sub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (command.Simple
                                                words: [
                                                  {(DQ ($ Id.VSub_DollarName '$_G_path_prog'))}
                                                  {<--version>}
                                                ]
                                                redirects: [
                                                  (redir
                                                    op: <Id.Redir_GreatAnd '2>&'>
                                                    loc: (redir_loc.Fd fd:2)
                                                    arg: {<1>}
                                                  )
                                                ]
                                                do_fork: T
                                              )
                                          )
                                        }
                                      arms: [
                                        (case_arm
                                          pat_list: [{<Id.Lit_Star '*'> <GNU> <Id.Lit_Star '*'>}]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:func_path_progs_result)
                                                  op: assign_op.Equal
                                                  rhs: {($ Id.VSub_DollarName '$_G_path_prog')}
                                                  spids: [868]
                                                )
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:_G_path_prog_found)
                                                  op: assign_op.Equal
                                                  rhs: {<Id.Lit_Colon ':'>}
                                                  spids: [871]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [863 866 874 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<Id.Lit_Star '*'>}]
                                          action: [
                                            (C {($ Id.VSub_DollarName '$_G_check_func')} 
                                              {($ Id.VSub_DollarName '$_G_path_prog')}
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:func_path_progs_result)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      ($ Id.VSub_DollarName '$func_check_prog_result')
                                                    }
                                                  spids: [885]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [877 878 889 -1]
                                        )
                                      ]
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {($ Id.VSub_DollarName '$_G_path_prog_found')})
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Break break>
                                          arg_word: {<3>}
                                        )
                                      ]
                                    )
                                  ]
                                )
                            )
                          ]
                        )
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$_G_save_IFS')}
                  spids: [913]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$func_path_progs_result'))})
                (BraceGroup
                  children: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <'no acceptable sed could be found in '> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\$'>
                            ) <PATH>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$SED'))})
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_sed_script)
                  op: assign_op.Equal
                  rhs: {<'s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/'>}
                  spids: [985]
                )
              ]
            )
            (command.ForEach
              iter_name: _G_i
              iter_words: [{<1>} {<2>} {<3>} {<4>} {<5>} {<6>} {<7>}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_G_sed_script)
                          op: assign_op.Equal
                          rhs: 
                            {($ Id.VSub_DollarName '$_G_sed_script') ($ Id.VSub_DollarName '$nl') 
                              ($ Id.VSub_DollarName '$_G_sed_script')
                            }
                          spids: [1013]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.Pipeline
              children: [
                (command.Simple
                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$_G_sed_script'))}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  words: [{<sed>} {<99q>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<conftest.sed>}
                    )
                  ]
                  do_fork: T
                )
              ]
              negated: F
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_sed_script)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [1041]
                )
              ]
            )
            (command.ShFunction
              name: func_check_prog_sed
              body: 
                (BraceGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_G_path_prog)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [1054]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_G_count)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [1059]
                        )
                      ]
                    )
                    (command.Simple
                      words: [{<printf>} {<0123456789>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<conftest.in>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [{<cat>} {<conftest.in>} {<conftest.in>}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<conftest.tmp>}
                                )
                              ]
                              do_fork: T
                            )
                            (C {<mv>} {<conftest.tmp>} {<conftest.in>})
                            (C {<cp>} {<conftest.in>} {<conftest.nl>})
                            (command.Simple
                              words: [{<echo>} {(SQ )}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<conftest.nl>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (command.Simple
                                  words: [
                                    {(DQ ($ Id.VSub_DollarName '$_G_path_prog'))}
                                    {<-f>}
                                    {<conftest.sed>}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Less '<'>
                                      loc: (redir_loc.Fd fd:0)
                                      arg: {<conftest.nl>}
                                    )
                                    (redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<conftest.out>}
                                    )
                                    (redir
                                      op: <Id.Redir_Great '2>'>
                                      loc: (redir_loc.Fd fd:2)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Break break>
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (command.Simple
                                  words: [{<diff>} {<conftest.out>} {<conftest.nl>}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                    (redir
                                      op: <Id.Redir_GreatAnd '2>&'>
                                      loc: (redir_loc.Fd fd:2)
                                      arg: {<1>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Break break>
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_G_count)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<expr>} {($ Id.VSub_DollarName '$_G_count')} 
                                            {<Id.Lit_Other '+'>} {<1>}
                                          )
                                      )
                                    }
                                  spids: [1152]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$_G_count'))} 
                                              {<-gt>} {(DQ ($ Id.VSub_DollarName '$_G_path_prog_max'))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:func_check_prog_result)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$_G_path_prog')}
                                          spids: [1188]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:_G_path_prog_max)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$_G_count')}
                                          spids: [1192]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1166 1181]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {<10>} {<-lt>} {(DQ ($ Id.VSub_DollarName '$_G_count'))})
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Break break>
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (C {<rm>} {<-f>} {<conftest.in>} {<conftest.tmp>} {<conftest.nl>} {<conftest.out>})
                  ]
                )
            )
            (C {<func_path_progs>} {(DQ <'sed gsed'>)} {<func_check_prog_sed>} 
              {($ Id.VSub_DollarName '$PATH') <Id.Lit_Colon ':'> <'/usr/xpg4/bin'>}
            )
            (C {<rm>} {<-f>} {<conftest.sed>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SED)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_path_progs_result')}
                  spids: [1258]
                )
              ]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$GREP'))})
        (BraceGroup
          children: [
            (command.ShFunction
              name: func_check_prog_grep
              body: 
                (BraceGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_G_path_prog)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [1293]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_G_count)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [1298]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_G_path_prog_max)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [1302]
                        )
                      ]
                    )
                    (command.Simple
                      words: [{<printf>} {<0123456789>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<conftest.in>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [{<cat>} {<conftest.in>} {<conftest.in>}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<conftest.tmp>}
                                )
                              ]
                              do_fork: T
                            )
                            (C {<mv>} {<conftest.tmp>} {<conftest.in>})
                            (C {<cp>} {<conftest.in>} {<conftest.nl>})
                            (command.Simple
                              words: [{<echo>} {(SQ <GREP>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<conftest.nl>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (command.Simple
                                  words: [
                                    {(DQ ($ Id.VSub_DollarName '$_G_path_prog'))}
                                    {<-e>}
                                    {(SQ <'GREP$'>)}
                                    {<-e>}
                                    {(SQ <'-(cannot match)-'>)}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Less '<'>
                                      loc: (redir_loc.Fd fd:0)
                                      arg: {<conftest.nl>}
                                    )
                                    (redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<conftest.out>}
                                    )
                                    (redir
                                      op: <Id.Redir_Great '2>'>
                                      loc: (redir_loc.Fd fd:2)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Break break>
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (command.Simple
                                  words: [{<diff>} {<conftest.out>} {<conftest.nl>}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                    (redir
                                      op: <Id.Redir_GreatAnd '2>&'>
                                      loc: (redir_loc.Fd fd:2)
                                      arg: {<1>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Break break>
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_G_count)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<expr>} {($ Id.VSub_DollarName '$_G_count')} 
                                            {<Id.Lit_Other '+'>} {<1>}
                                          )
                                      )
                                    }
                                  spids: [1404]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$_G_count'))} 
                                              {<-gt>} {(DQ ($ Id.VSub_DollarName '$_G_path_prog_max'))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:func_check_prog_result)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$_G_path_prog')}
                                          spids: [1440]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:_G_path_prog_max)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$_G_count')}
                                          spids: [1444]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1418 1433]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {<10>} {<-lt>} {(DQ ($ Id.VSub_DollarName '$_G_count'))})
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Break break>
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (C {<rm>} {<-f>} {<conftest.in>} {<conftest.tmp>} {<conftest.nl>} {<conftest.out>})
                  ]
                )
            )
            (C {<func_path_progs>} {(DQ <'grep ggrep'>)} {<func_check_prog_grep>} 
              {($ Id.VSub_DollarName '$PATH') <Id.Lit_Colon ':'> <'/usr/xpg4/bin'>}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:GREP)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_path_progs_result')}
                  spids: [1503]
                )
              ]
            )
          ]
        )
      ]
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name CP>
          suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{(DQ <'cp -f'>)})
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name ECHO>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VTest_Equals '='>
              arg_word: {(DQ <'printf %s'> <Id.Lit_BadBackslash '\\'> <n>)}
            )
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name EGREP>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VTest_Equals '='>
              arg_word: {(DQ ($ Id.VSub_DollarName '$GREP') <' -E'>)}
            )
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name FGREP>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VTest_Equals '='>
              arg_word: {(DQ ($ Id.VSub_DollarName '$GREP') <' -F'>)}
            )
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name LN_S>
          suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{(DQ <'ln -s'>)})
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name MAKE>
          suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{(DQ <make>)})
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name MKDIR>
          suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{(DQ <mkdir>)})
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name MV>
          suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{(DQ <'mv -f'>)})
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name RM>
          suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{(DQ <'rm -f'>)})
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name SHELL>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VTest_Equals '='>
              arg_word: 
                {
                  (DQ 
                    (braced_var_sub
                      token: <Id.VSub_Name CONFIG_SHELL>
                      suffix_op: 
                        (suffix_op.Unary
                          tok: <Id.VTest_Hyphen ->
                          arg_word: {<Id.Lit_Slash '/'> <bin> <Id.Lit_Slash '/'> <sh>}
                        )
                    )
                  )
                }
            )
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sed_dirname)
          op: assign_op.Equal
          rhs: {(SQ <'s|/[^/]*$||'>)}
          spids: [1656]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sed_basename)
          op: assign_op.Equal
          rhs: {(SQ <'s|^.*/||'>)}
          spids: [1661]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sed_quote_subst)
          op: assign_op.Equal
          rhs: {(SQ <'s|\\([`"$\\\\]\\)|\\\\\\1|g'>)}
          spids: [1673]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sed_double_quote_subst)
          op: assign_op.Equal
          rhs: {(SQ <'s/\\(["`\\\\]\\)/\\\\\\1/g'>)}
          spids: [1682]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sed_make_literal_regex)
          op: assign_op.Equal
          rhs: {(SQ <'s|[].[^$\\\\*\\/]|\\\\&|g'>)}
          spids: [1694]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sed_naive_backslashify)
          op: assign_op.Equal
          rhs: {(SQ <'s|\\\\\\\\*|\\\\|g;s|/|\\\\|g;s|\\\\|\\\\\\\\|g'>)}
          spids: [1709]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_G_bs)
          op: assign_op.Equal
          rhs: {(SQ <'\\\\'>)}
          spids: [1730]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_G_bs2)
          op: assign_op.Equal
          rhs: {(SQ <'\\\\\\\\'>)}
          spids: [1735]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_G_bs4)
          op: assign_op.Equal
          rhs: {(SQ <'\\\\\\\\\\\\\\\\'>)}
          spids: [1740]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_G_dollar)
          op: assign_op.Equal
          rhs: {(SQ <'\\$'>)}
          spids: [1745]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sed_double_backslash)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'  s/'> ($ Id.VSub_DollarName '$_G_bs4') <'/&'> 
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <'\n'> <'/g\n'> <'  s/^'> ($ Id.VSub_DollarName '$_G_bs2') ($ Id.VSub_DollarName '$_G_dollar') <'/'> 
                ($ Id.VSub_DollarName '$_G_bs') <'&/\n'> <'  s/'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <'([^'> 
                ($ Id.VSub_DollarName '$_G_bs') <']'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <')'> 
                ($ Id.VSub_DollarName '$_G_bs2') ($ Id.VSub_DollarName '$_G_dollar') <'/'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) 
                <1> ($ Id.VSub_DollarName '$_G_bs2') ($ Id.VSub_DollarName '$_G_bs') ($ Id.VSub_DollarName '$_G_dollar') 
                <'/g\n'> <'  s/'> <Id.Lit_BadBackslash '\\'> <'n//g'>
              )
            }
          spids: [1750]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:EXIT_SUCCESS)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [1835]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:EXIT_FAILURE)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [1838]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:EXIT_MISMATCH)
          op: assign_op.Equal
          rhs: {<63>}
          spids: [1841]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:EXIT_SKIP)
          op: assign_op.Equal
          rhs: {<77>}
          spids: [1847]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:debug_cmd)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name debug_cmd>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{(DQ <':'>)})
              )
            }
          spids: [1869]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:exit_cmd)
          op: assign_op.Equal
          rhs: {<Id.Lit_Colon ':'>}
          spids: [1878]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:exit_status)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$EXIT_SUCCESS')}
          spids: [1903]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:progpath)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$0')}
          spids: [1922]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:progname)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {($ Id.VSub_DollarName '$ECHO')} {(DQ ($ Id.VSub_DollarName '$progpath'))})
                      (C {($ Id.VSub_DollarName '$SED')} {(DQ ($ Id.VSub_DollarName '$sed_basename'))})
                    ]
                    negated: F
                  )
              )
            }
          spids: [1929]
        )
      ]
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$progpath')}
      arms: [
        (case_arm
          pat_list: [
            {<Id.Lit_LBracket '['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <'/'> 
              <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
            }
            {<Id.Lit_LBracket '['> <A-Za-z> <Id.Lit_RBracket ']'> <Id.Lit_Colon ':'> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <Id.Lit_Star '*'>
            }
          ]
          spids: [1958 1970 1972 -1]
        )
        (case_arm
          pat_list: [
            {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <'/'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
            }
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:progdir)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {($ Id.VSub_DollarName '$ECHO')} 
                                {(DQ ($ Id.VSub_DollarName '$progpath'))}
                              )
                              (C {($ Id.VSub_DollarName '$SED')} 
                                {(DQ ($ Id.VSub_DollarName '$sed_dirname'))}
                              )
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [1984]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:progdir)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.AndOr
                            ops: [Id.Op_DAmp]
                            children: [(C {<cd>} {(DQ ($ Id.VSub_DollarName '$progdir'))}) (C {<pwd>})]
                          )
                      )
                    }
                  spids: [2003]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:progpath)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$progdir') <'/'> ($ Id.VSub_DollarName '$progname')}
                  spids: [2019]
                )
              ]
            )
          ]
          spids: [1975 1981 2025 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$IFS')}
                  spids: [2032]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name PATH_SEPARATOR>
                        suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<':'>})
                      )
                    }
                  spids: [2036]
                )
              ]
            )
            (command.ForEach
              iter_name: progdir
              iter_words: [{($ Id.VSub_DollarName '$PATH')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:IFS)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$_G_IFS')}
                          spids: [2056]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {<-x>} 
                          {
                            (DQ ($ Id.VSub_DollarName '$progdir') <'/'> 
                              ($ Id.VSub_DollarName '$progname')
                            )
                          }
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Break break>
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$_G_IFS')}
                  spids: [2078]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$progdir'))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:progdir)
                      op: assign_op.Equal
                      rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<pwd>}))}
                      spids: [2092]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:progpath)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$progdir') <'/'> ($ Id.VSub_DollarName '$progname')}
                  spids: [2100]
                )
              ]
            )
          ]
          spids: [2028 2029 2106 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:opt_dry_run)
          op: assign_op.Equal
          rhs: {<false>}
          spids: [2132]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:opt_quiet)
          op: assign_op.Equal
          rhs: {<false>}
          spids: [2135]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:opt_verbose)
          op: assign_op.Equal
          rhs: {<false>}
          spids: [2138]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:warning_categories)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [2151]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:warning_func)
          op: assign_op.Equal
          rhs: {<func_warn_and_continue>}
          spids: [2163]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:opt_warning_types)
          op: assign_op.Equal
          rhs: {<all>}
          spids: [2176]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:require_term_colors)
          op: assign_op.Equal
          rhs: {<func_require_term_colors>}
          spids: [2232]
        )
      ]
    )
    (command.ShFunction
      name: func_require_term_colors
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-t>} {<1>})
                (BraceGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {<-n>} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: <Id.VSub_Name COLORTERM>
                                suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<set>})
                              )
                            )
                          }
                        )
                        (C {<Id.Lit_Colon ':'>} 
                          {
                            (braced_var_sub
                              token: <Id.VSub_Name USE_ANSI_COLORS>
                              suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{(DQ <1>)})
                            )
                          }
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {<1>} {<Id.Lit_Equals '='>} 
                                      {(DQ ($ Id.VSub_DollarName '$USE_ANSI_COLORS'))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:tc_reset)
                                  op: assign_op.Equal
                                  rhs: {(SQ <'\x1b[0m'>)}
                                  spids: [2316]
                                )
                              ]
                            )
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:tc_bold)
                                      op: assign_op.Equal
                                      rhs: {(SQ <'\x1b[1m'>)}
                                      spids: [2322]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:tc_standout)
                                  op: assign_op.Equal
                                  rhs: {(SQ <'\x1b[7m'>)}
                                  spids: [2328]
                                )
                              ]
                            )
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:tc_red)
                                      op: assign_op.Equal
                                      rhs: {(SQ <'\x1b[31m'>)}
                                      spids: [2334]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:tc_green)
                                  op: assign_op.Equal
                                  rhs: {(SQ <'\x1b[32m'>)}
                                  spids: [2340]
                                )
                              ]
                            )
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:tc_blue)
                                      op: assign_op.Equal
                                      rhs: {(SQ <'\x1b[34m'>)}
                                      spids: [2346]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:tc_cyan)
                                  op: assign_op.Equal
                                  rhs: {(SQ <'\x1b[36m'>)}
                                  spids: [2352]
                                )
                              ]
                            )
                          ]
                          spids: [2296 2309]
                        )
                      ]
                      else_action: [
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (C {<test>} {<-n>} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        words: [{<tput>} {<sgr0>}]
                                        redirects: [
                                          (redir
                                            op: <Id.Redir_Great '2>'>
                                            loc: (redir_loc.Fd fd:2)
                                            arg: {<'/dev/null'>}
                                          )
                                        ]
                                        do_fork: T
                                      )
                                  )
                                )
                              }
                            )
                            (BraceGroup
                              children: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:tc_reset)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (command_sub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: (C {<tput>} {<sgr0>})
                                          )
                                        }
                                      spids: [2387]
                                    )
                                  ]
                                )
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {<test>} {<-n>} 
                                      {
                                        (DQ 
                                          (command_sub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (command.Simple
                                                words: [{<tput>} {<bold>}]
                                                redirects: [
                                                  (redir
                                                    op: <Id.Redir_Great '2>'>
                                                    loc: (redir_loc.Fd fd:2)
                                                    arg: {<'/dev/null'>}
                                                  )
                                                ]
                                                do_fork: T
                                              )
                                          )
                                        )
                                      }
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:tc_bold)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: (C {<tput>} {<bold>})
                                              )
                                            }
                                          spids: [2416]
                                        )
                                      ]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:tc_standout)
                                      op: assign_op.Equal
                                      rhs: {($ Id.VSub_DollarName '$tc_bold')}
                                      spids: [2426]
                                    )
                                  ]
                                )
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {<test>} {<-n>} 
                                      {
                                        (DQ 
                                          (command_sub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (command.Simple
                                                words: [{<tput>} {<smso>}]
                                                redirects: [
                                                  (redir
                                                    op: <Id.Redir_Great '2>'>
                                                    loc: (redir_loc.Fd fd:2)
                                                    arg: {<'/dev/null'>}
                                                  )
                                                ]
                                                do_fork: T
                                              )
                                          )
                                        )
                                      }
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:tc_standout)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: (C {<tput>} {<smso>})
                                              )
                                            }
                                          spids: [2449]
                                        )
                                      ]
                                    )
                                  ]
                                )
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {<test>} {<-n>} 
                                      {
                                        (DQ 
                                          (command_sub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (command.Simple
                                                words: [{<tput>} {<setaf>} {<1>}]
                                                redirects: [
                                                  (redir
                                                    op: <Id.Redir_Great '2>'>
                                                    loc: (redir_loc.Fd fd:2)
                                                    arg: {<'/dev/null'>}
                                                  )
                                                ]
                                                do_fork: T
                                              )
                                          )
                                        )
                                      }
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:tc_red)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: (C {<tput>} {<setaf>} {<1>})
                                              )
                                            }
                                          spids: [2480]
                                        )
                                      ]
                                    )
                                  ]
                                )
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {<test>} {<-n>} 
                                      {
                                        (DQ 
                                          (command_sub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (command.Simple
                                                words: [{<tput>} {<setaf>} {<2>}]
                                                redirects: [
                                                  (redir
                                                    op: <Id.Redir_Great '2>'>
                                                    loc: (redir_loc.Fd fd:2)
                                                    arg: {<'/dev/null'>}
                                                  )
                                                ]
                                                do_fork: T
                                              )
                                          )
                                        )
                                      }
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:tc_green)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: (C {<tput>} {<setaf>} {<2>})
                                              )
                                            }
                                          spids: [2513]
                                        )
                                      ]
                                    )
                                  ]
                                )
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {<test>} {<-n>} 
                                      {
                                        (DQ 
                                          (command_sub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (command.Simple
                                                words: [{<tput>} {<setaf>} {<4>}]
                                                redirects: [
                                                  (redir
                                                    op: <Id.Redir_Great '2>'>
                                                    loc: (redir_loc.Fd fd:2)
                                                    arg: {<'/dev/null'>}
                                                  )
                                                ]
                                                do_fork: T
                                              )
                                          )
                                        )
                                      }
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:tc_blue)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: (C {<tput>} {<setaf>} {<4>})
                                              )
                                            }
                                          spids: [2546]
                                        )
                                      ]
                                    )
                                  ]
                                )
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {<test>} {<-n>} 
                                      {
                                        (DQ 
                                          (command_sub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (command.Simple
                                                words: [{<tput>} {<setaf>} {<5>}]
                                                redirects: [
                                                  (redir
                                                    op: <Id.Redir_Great '2>'>
                                                    loc: (redir_loc.Fd fd:2)
                                                    arg: {<'/dev/null'>}
                                                  )
                                                ]
                                                do_fork: T
                                              )
                                          )
                                        )
                                      }
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:tc_cyan)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: (C {<tput>} {<setaf>} {<5>})
                                              )
                                            }
                                          spids: [2579]
                                        )
                                      ]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:require_term_colors)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_Colon ':'>}
                  spids: [2601]
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<set>} {<Id.Lit_Equals '='>} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name BASH_VERSION>
                            suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<set>})
                          ) 
                          (braced_var_sub
                            token: <Id.VSub_Name ZSH_VERSION>
                            suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<set>})
                          )
                        )
                      }
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<Id.Lit_Colon ':'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name _G_HAVE_ARITH_OP>
                  suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{(DQ <yes>)})
                )
              }
            )
            (C {<Id.Lit_Colon ':'>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name _G_HAVE_XSI_OPS>
                  suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{(DQ <yes>)})
                )
              }
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$BASH_VERSION')}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_LBracket '['> <12> <Id.Lit_RBracket ']'> <.> <Id.Lit_Star '*'>}
                    {<3.0>}
                    {<3.0> <Id.Lit_Star '*'>}
                  ]
                  spids: [2713 2727 2729 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<Id.Lit_Colon ':'>} 
                      {
                        (braced_var_sub
                          token: <Id.VSub_Name _G_HAVE_PLUSEQ_OP>
                          suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{(DQ <yes>)})
                        )
                      }
                    )
                  ]
                  spids: [2732 2733 2747 -1]
                )
              ]
            )
          ]
          spids: [2655 2677]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp]
      children: [
        (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$_G_HAVE_PLUSEQ_OP'))})
        (command.Subshell
          child: (C {<eval>} {(SQ <'x=a; x+=" b"; test "a b" = "$x"'>)})
          redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_G_HAVE_PLUSEQ_OP)
              op: assign_op.Equal
              rhs: {<yes>}
              spids: [2796]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                  {(DQ ($ Id.VSub_DollarName '$_G_HAVE_PLUSEQ_OP'))}
                )
              ]
            )
          action: [
            (C {<eval>} 
              {
                (SQ <'func_append ()\n'> <'  {\n'> <'    $debug_cmd\n'> <'\n'> <'    eval "$1+=\\$2"\n'> 
                  <'  }'>
                )
              }
            )
          ]
          spids: [2800 2812]
        )
      ]
      else_action: [
        (command.ShFunction
          name: func_append
          body: 
            (BraceGroup
              children: [
                (C {($ Id.VSub_DollarName '$debug_cmd')})
                (C {<eval>} 
                  {
                    (DQ ($ Id.VSub_Number '$1') <'='> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\$'>
                      ) ($ Id.VSub_Number '$1') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <2>
                    )
                  }
                )
              ]
            )
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                      {(DQ ($ Id.VSub_DollarName '$_G_HAVE_PLUSEQ_OP'))}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<eval>} 
              {
                (SQ <'func_append_quoted ()\n'> <'  {\n'> <'    $debug_cmd\n'> <'\n'> 
                  <'    func_quote_for_eval "$2"\n'> <'    eval "$1+=\\\\ \\$func_quote_for_eval_result"\n'> <'  }'>
                )
              }
            )
          ]
          spids: [2880 2893]
        )
      ]
      else_action: [
        (command.ShFunction
          name: func_append_quoted
          body: 
            (BraceGroup
              children: [
                (C {($ Id.VSub_DollarName '$debug_cmd')})
                (C {<func_quote_for_eval>} {(DQ ($ Id.VSub_Number '$2'))})
                (C {<eval>} 
                  {
                    (DQ ($ Id.VSub_Number '$1') <'='> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\$'>
                      ) ($ Id.VSub_Number '$1') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <' '> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\$'>
                      ) <func_quote_for_eval_result>
                    )
                  }
                )
              ]
            )
        )
      ]
    )
    (command.ShFunction
      name: func_append_uniq
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {<eval>} 
              {<Id.Lit_VarLike '_G_current_value='> (SQ <'`$ECHO $'>) ($ Id.VSub_Number '$1') (SQ <'`'>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_delim)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<expr>} {(DQ ($ Id.VSub_Number '$2'))} {<Id.Lit_Colon ':'>} 
                            {(SQ <'\\(.\\)'>)}
                          )
                      )
                    }
                  spids: [3005]
                )
              ]
            )
            (command.Case
              to_match: 
                {($ Id.VSub_DollarName '$_G_delim') ($ Id.VSub_DollarName '$_G_current_value') 
                  ($ Id.VSub_DollarName '$_G_delim')
                }
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> (DQ ($ Id.VSub_Number '$2') ($ Id.VSub_DollarName '$_G_delim')) 
                      <Id.Lit_Star '*'>
                    }
                  ]
                  spids: [3037 3043 3045 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<func_append>} {(DQ ($ Id.VSub_At '$@'))})]
                  spids: [3048 3049 3057 -1]
                )
              ]
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp]
      children: [
        (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$_G_HAVE_ARITH_OP'))})
        (command.Subshell
          child: (C {<eval>} {(SQ <'test 2 = $(( 1 + 1 ))'>)})
          redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_G_HAVE_ARITH_OP)
              op: assign_op.Equal
              rhs: {<yes>}
              spids: [3103]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                      {(DQ ($ Id.VSub_DollarName '$_G_HAVE_ARITH_OP'))}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<eval>} 
              {
                (SQ <'func_arith ()\n'> <'  {\n'> <'    $debug_cmd\n'> <'\n'> 
                  <'    func_arith_result=$(( $* ))\n'> <'  }'>
                )
              }
            )
          ]
          spids: [3107 3120]
        )
      ]
      else_action: [
        (command.ShFunction
          name: func_arith
          body: 
            (BraceGroup
              children: [
                (C {($ Id.VSub_DollarName '$debug_cmd')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:func_arith_result)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: (C {<expr>} {(DQ ($ Id.VSub_At '$@'))})
                          )
                        }
                      spids: [3150]
                    )
                  ]
                )
              ]
            )
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                      {(DQ ($ Id.VSub_DollarName '$_G_HAVE_XSI_OPS'))}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_b)
                  op: assign_op.Equal
                  rhs: {(SQ <'func_basename_result=${1##*/}'>)}
                  spids: [3208]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_d)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (SQ <'case $1 in\n'> <'        */*) func_dirname_result=${1%/*}$2 ;;\n'> 
                        <'        *  ) func_dirname_result=$3        ;;\n'> <'      esac'>
                      )
                    }
                  spids: [3214]
                )
              ]
            )
          ]
          spids: [3180 3193]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_b)
              op: assign_op.Equal
              rhs: {(SQ <'func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'>)}
              spids: [3230]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_d)
              op: assign_op.Equal
              rhs: 
                {
                  (SQ <'func_dirname_result=`$ECHO "$1"  |$SED "$sed_dirname"`\n'> 
                    <'      if test "X$func_dirname_result" = "X$1"; then\n'> <'        func_dirname_result=$3\n'> <'      else\n'> 
                    <'        func_append func_dirname_result "$2"\n'> <'      fi'>
                  )
                }
              spids: [3236]
            )
          ]
        )
      ]
    )
    (C {<eval>} 
      {(SQ <'func_basename ()\n'> <'{\n'> <'    $debug_cmd\n'> <'\n'> <'    '>) 
        (DQ ($ Id.VSub_DollarName '$_b')) (SQ <'\n'> <'}'>)
      }
    )
    (C {<eval>} 
      {(SQ <'func_dirname ()\n'> <'{\n'> <'    $debug_cmd\n'> <'\n'> <'    '>) 
        (DQ ($ Id.VSub_DollarName '$_d')) (SQ <'\n'> <'}'>)
      }
    )
    (C {<eval>} 
      {(SQ <'func_dirname_and_basename ()\n'> <'{\n'> <'    $debug_cmd\n'> <'\n'> <'    '>) 
        (DQ ($ Id.VSub_DollarName '$_b')) (SQ <'\n'> <'    '>) (DQ ($ Id.VSub_DollarName '$_d')) (SQ <'\n'> <'}'>)
      }
    )
    (command.ShFunction
      name: func_echo
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_message)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Star '$*')}
                  spids: [3382]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_echo_IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$IFS')}
                  spids: [3387]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$nl')}
                  spids: [3391]
                )
              ]
            )
            (command.ForEach
              iter_name: _G_line
              iter_words: [{($ Id.VSub_DollarName '$_G_message')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:IFS)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_echo_IFS')}
                          spids: [3407]
                        )
                      ]
                    )
                    (C {($ Id.VSub_DollarName '$ECHO')} 
                      {
                        (DQ ($ Id.VSub_DollarName '$progname') <': '> ($ Id.VSub_DollarName '$_G_line'))
                      }
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_echo_IFS')}
                  spids: [3423]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_echo_all
      body: (BraceGroup children:[(C {($ Id.VSub_DollarName '$ECHO')} {(DQ ($ Id.VSub_Star '$*'))})])
    )
    (command.ShFunction
      name: func_echo_infix_1
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {($ Id.VSub_DollarName '$require_term_colors')})
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:_G_infix)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [3485]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_indent)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$_G_infix')}
                  spids: [3492]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_prefix)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$progname') <': '> ($ Id.VSub_DollarName '$_G_infix') 
                        <': '>
                      )
                    }
                  spids: [3496]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_message)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Star '$*')}
                  spids: [3505]
                )
              ]
            )
            (command.ForEach
              iter_name: _G_tc
              iter_words: [
                {(DQ ($ Id.VSub_DollarName '$tc_reset'))}
                {(DQ ($ Id.VSub_DollarName '$tc_bold'))}
                {(DQ ($ Id.VSub_DollarName '$tc_standout'))}
                {(DQ ($ Id.VSub_DollarName '$tc_red'))}
                {(DQ ($ Id.VSub_DollarName '$tc_green'))}
                {(DQ ($ Id.VSub_DollarName '$tc_blue'))}
                {(DQ ($ Id.VSub_DollarName '$tc_cyan'))}
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$_G_tc'))})
                        (BraceGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_G_esc_tc)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {($ Id.VSub_DollarName '$ECHO')} 
                                                {(DQ ($ Id.VSub_DollarName '$_G_tc'))}
                                              )
                                              (C {($ Id.VSub_DollarName '$SED')} 
                                                {
                                                  (DQ 
                                                    ($ Id.VSub_DollarName '$sed_make_literal_regex')
                                                  )
                                                }
                                              )
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [3565]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_G_indent)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {($ Id.VSub_DollarName '$ECHO')} 
                                                {(DQ ($ Id.VSub_DollarName '$_G_indent'))}
                                              )
                                              (C {($ Id.VSub_DollarName '$SED')} 
                                                {
                                                  (DQ <'s|'> ($ Id.VSub_DollarName '$_G_esc_tc') 
                                                    <'||g'>
                                                  )
                                                }
                                              )
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [3585]
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_indent)
                  op: assign_op.Equal
                  rhs: 
                    {(DQ ($ Id.VSub_DollarName '$progname') <': '>) 
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ ($ Id.VSub_DollarName '$_G_indent'))})
                              (C {($ Id.VSub_DollarName '$SED')} {(SQ <'s|.| |g'>)})
                            ]
                            negated: F
                          )
                      ) (DQ <'  '>)
                    }
                  spids: [3613]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_echo_infix_1_IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$IFS')}
                  spids: [3644]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$nl')}
                  spids: [3648]
                )
              ]
            )
            (command.ForEach
              iter_name: _G_line
              iter_words: [{($ Id.VSub_DollarName '$_G_message')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:IFS)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_echo_infix_1_IFS')}
                          spids: [3664]
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {($ Id.VSub_DollarName '$ECHO')}
                        {
                          (DQ ($ Id.VSub_DollarName '$_G_prefix') ($ Id.VSub_DollarName '$tc_bold') 
                            ($ Id.VSub_DollarName '$_G_line') ($ Id.VSub_DollarName '$tc_reset')
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_G_prefix)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$_G_indent')}
                          spids: [3681]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_echo_infix_1_IFS')}
                  spids: [3688]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_error
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {($ Id.VSub_DollarName '$require_term_colors')})
            (command.Simple
              words: [
                {<func_echo_infix_1>}
                {
                  (DQ <'  '> ($ Id.VSub_DollarName '$tc_standout') (${ Id.VSub_Name tc_red) <error> 
                    ($ Id.VSub_DollarName '$tc_reset')
                  )
                }
                {(DQ ($ Id.VSub_Star '$*'))}
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: func_fatal_error
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {<func_error>} {(DQ ($ Id.VSub_Star '$*'))})
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_DollarName '$EXIT_FAILURE')}
            )
          ]
        )
    )
    (command.ShFunction
      name: func_grep
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$GREP')}
                {(DQ ($ Id.VSub_Number '$1'))}
                {(DQ ($ Id.VSub_Number '$2'))}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp]
      children: [
        (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$_G_HAVE_XSI_OPS'))})
        (command.Subshell
          child: 
            (C {<eval>} 
              {(SQ <'x=a/b/c;\n'> <'      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"'>)}
            )
          redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_G_HAVE_XSI_OPS)
              op: assign_op.Equal
              rhs: {<yes>}
              spids: [3861]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                      {(DQ ($ Id.VSub_DollarName '$_G_HAVE_XSI_OPS'))}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<eval>} 
              {
                (SQ <'func_len ()\n'> <'  {\n'> <'    $debug_cmd\n'> <'\n'> 
                  <'    func_len_result=${#1}\n'> <'  }'>
                )
              }
            )
          ]
          spids: [3865 3878]
        )
      ]
      else_action: [
        (command.ShFunction
          name: func_len
          body: 
            (BraceGroup
              children: [
                (C {($ Id.VSub_DollarName '$debug_cmd')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:func_len_result)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.AndOr
                                ops: [Id.Op_DPipe]
                                children: [
                                  (command.Simple
                                    words: [
                                      {<expr>}
                                      {(DQ ($ Id.VSub_Number '$1'))}
                                      {<Id.Lit_Colon ':'>}
                                      {(DQ <'.*'>)}
                                    ]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_Great '2>'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    do_fork: T
                                  )
                                  (C {<echo>} {($ Id.VSub_DollarName '$max_cmd_len')})
                                ]
                              )
                          )
                        }
                      spids: [3908]
                    )
                  ]
                )
              ]
            )
        )
      ]
    )
    (command.ShFunction
      name: func_mkdir_p
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_directory_path)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [3962]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_dir_list)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [3966]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$_G_directory_path'))})
                                (C {<test>} {<Id.Lit_Colon ':'>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} 
                                  {(DQ ($ Id.VSub_DollarName '$opt_dry_run'))}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$_G_directory_path')}
                      arms: [
                        (case_arm
                          pat_list: [{<-> <Id.Lit_Star '*'>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_G_directory_path)
                                  op: assign_op.Equal
                                  rhs: {<'./'> ($ Id.VSub_DollarName '$_G_directory_path')}
                                  spids: [4013]
                                )
                              ]
                            )
                          ]
                          spids: [4009 4011 4017 -1]
                        )
                      ]
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<test>} {<Id.KW_Bang '!'>} {<-d>} 
                                  {(DQ ($ Id.VSub_DollarName '$_G_directory_path'))}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_G_dir_list)
                                  op: assign_op.Equal
                                  rhs: 
                                    {($ Id.VSub_DollarName '$_G_directory_path') <Id.Lit_Colon ':'> 
                                      ($ Id.VSub_DollarName '$_G_dir_list')
                                    }
                                  spids: [4052]
                                )
                              ]
                            )
                            (command.Case
                              to_match: {($ Id.VSub_DollarName '$_G_directory_path')}
                              arms: [
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>}]
                                  spids: [4069 4072 4074 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                                  spids: [4076 4077 4081 -1]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_G_directory_path)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {($ Id.VSub_DollarName '$ECHO')} 
                                                {(DQ ($ Id.VSub_DollarName '$_G_directory_path'))}
                                              )
                                              (C {($ Id.VSub_DollarName '$SED')} {<-e>} 
                                                {(DQ ($ Id.VSub_DollarName '$sed_dirname'))}
                                              )
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [4091]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_G_dir_list)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {($ Id.VSub_DollarName '$ECHO')} 
                                        {(DQ ($ Id.VSub_DollarName '$_G_dir_list'))}
                                      )
                                      (C {($ Id.VSub_DollarName '$SED')} {(SQ <'s|:*$||'>)})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [4116]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:func_mkdir_p_IFS)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName '$IFS')}
                              spids: [4137]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:IFS)
                          op: assign_op.Equal
                          rhs: {<Id.Lit_Colon ':'>}
                          spids: [4141]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: _G_dir
                      iter_words: [{($ Id.VSub_DollarName '$_G_dir_list')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:IFS)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$func_mkdir_p_IFS')}
                                  spids: [4157]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (command.Simple
                                  words: [
                                    {($ Id.VSub_DollarName '$MKDIR')}
                                    {(DQ ($ Id.VSub_DollarName '$_G_dir'))}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '2>'>
                                      loc: (redir_loc.Fd fd:2)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (C {<Id.Lit_Colon ':'>})
                              ]
                            )
                          ]
                        )
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:IFS)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_mkdir_p_IFS')}
                          spids: [4190]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<test>} {<-d>} {(DQ ($ Id.VSub_DollarName '$_G_directory_path'))})
                        (C {<func_fatal_error>} 
                          {(DQ <'Failed to create \''> ($ Id.VSub_Number '$1') <'\''>)}
                        )
                      ]
                    )
                  ]
                  spids: [3970 3994]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_mktempdir
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_template)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name TMPDIR>
                        suffix_op: 
                          (suffix_op.Unary
                            tok: <Id.VTest_Hyphen ->
                            arg_word: {<Id.Lit_Slash '/'> <tmp>}
                          )
                      ) <'/'> 
                      (braced_var_sub
                        token: <Id.VSub_Number 1>
                        suffix_op: 
                          (suffix_op.Unary
                            tok: <Id.VTest_Hyphen ->
                            arg_word: {($ Id.VSub_DollarName '$progname')}
                          )
                      )
                    }
                  spids: [4253]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<Id.Lit_Colon ':'>} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName '$opt_dry_run'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_G_tmpdir)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$_G_template') <-> ($ Id.VSub_Dollar '$$')}
                          spids: [4289]
                        )
                      ]
                    )
                  ]
                  spids: [4269 4282]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:_G_tmpdir)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Simple
                                words: [
                                  {<mktemp>}
                                  {<-d>}
                                  {(DQ ($ Id.VSub_DollarName '$_G_template') <-XXXXXXXX>)}
                                ]
                                redirects: [
                                  (redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                          )
                        }
                      spids: [4303]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<test>} {<Id.KW_Bang '!'>} {<-d>} 
                                  {(DQ ($ Id.VSub_DollarName '$_G_tmpdir'))}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:_G_tmpdir)
                              op: assign_op.Equal
                              rhs: 
                                {($ Id.VSub_DollarName '$_G_template') <-> 
                                  (braced_var_sub
                                    token: <Id.VSub_Name RANDOM>
                                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<0>})
                                  ) ($ Id.VSub_Dollar '$$')
                                }
                              spids: [4342]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:func_mktempdir_umask)
                              op: assign_op.Equal
                              rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<umask>}))}
                              spids: [4354]
                            )
                          ]
                        )
                        (C {<umask>} {<0077>})
                        (C {($ Id.VSub_DollarName '$MKDIR')} {(DQ ($ Id.VSub_DollarName '$_G_tmpdir'))})
                        (C {<umask>} {($ Id.VSub_DollarName '$func_mktempdir_umask')})
                      ]
                      spids: [4322 4335]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<test>} {<-d>} {(DQ ($ Id.VSub_DollarName '$_G_tmpdir'))})
                    (C {<func_fatal_error>} 
                      {
                        (DQ <'cannot create temporary directory \''> 
                          ($ Id.VSub_DollarName '$_G_tmpdir') <'\''>
                        )
                      }
                    )
                  ]
                )
              ]
            )
            (C {($ Id.VSub_DollarName '$ECHO')} {(DQ ($ Id.VSub_DollarName '$_G_tmpdir'))})
          ]
        )
    )
    (command.ShFunction
      name: func_normal_abspath
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_pathcar)
                  op: assign_op.Equal
                  rhs: {(SQ <'s|^/\\([^/]*\\).*$|\\1|'>)}
                  spids: [4453]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_pathcdr)
                  op: assign_op.Equal
                  rhs: {(SQ <'s|^/[^/]*||'>)}
                  spids: [4459]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_removedotparts)
                  op: assign_op.Equal
                  rhs: {(SQ <':dotsl\n'> <'\t\ts|/\\./|/|g\n'> <'\t\tt dotsl\n'> <'\t\ts|/\\.$|/|'>)}
                  spids: [4465]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_collapseslashes)
                  op: assign_op.Equal
                  rhs: {(SQ <'s|/\\{1,\\}|/|g'>)}
                  spids: [4474]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_finalslash)
                  op: assign_op.Equal
                  rhs: {(SQ <'s|/*$|/|'>)}
                  spids: [4480]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_normal_abspath_result)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [4491]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_normal_abspath_tpath)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [4494]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_normal_abspath_altnamespace)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [4498]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$func_normal_abspath_tpath')}
              arms: [
                (case_arm
                  pat_list: [{(DQ )}]
                  action: [
                    (C {<func_stripname>} {(SQ )} {(SQ <'/'>)} 
                      {(DQ (command_sub left_token:<Id.Left_Backtick '`'> child:(C {<pwd>})))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_normal_abspath_result)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_stripname_result')}
                          spids: [4535]
                        )
                      ]
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Return return>)
                  ]
                  spids: [4508 4510 4542 -1]
                )
                (case_arm
                  pat_list: [{<'///'> <Id.Lit_Star '*'>}]
                  spids: [4557 4559 4566 -1]
                )
                (case_arm
                  pat_list: [{<'//'> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_normal_abspath_altnamespace)
                          op: assign_op.Equal
                          rhs: {<'/'>}
                          spids: [4586]
                        )
                      ]
                    )
                  ]
                  spids: [4569 4571 4590 -1]
                )
                (case_arm
                  pat_list: [{<'/'> <Id.Lit_Star '*'>}]
                  spids: [4593 4595 4602 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_normal_abspath_tpath)
                          op: assign_op.Equal
                          rhs: 
                            {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<pwd>})) <'/'> 
                              ($ Id.VSub_DollarName '$func_normal_abspath_tpath')
                            }
                          spids: [4613]
                        )
                      ]
                    )
                  ]
                  spids: [4605 4606 4623 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_normal_abspath_tpath)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {($ Id.VSub_DollarName '$ECHO')} 
                                {(DQ ($ Id.VSub_DollarName '$func_normal_abspath_tpath'))}
                              )
                              (C {($ Id.VSub_DollarName '$SED')} {<-e>} 
                                {(DQ ($ Id.VSub_DollarName '$_G_removedotparts'))} {<-e>} {(DQ ($ Id.VSub_DollarName '$_G_collapseslashes'))} {<-e>} 
                                {(DQ ($ Id.VSub_DollarName '$_G_finalslash'))}
                              )
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [4642]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: (C {<Id.Lit_Colon ':'>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {<'/'>} {<Id.Lit_Equals '='>} 
                                      {(DQ ($ Id.VSub_DollarName '$func_normal_abspath_tpath'))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {<-z>} 
                                              {
                                                (DQ 
                                                  ($ Id.VSub_DollarName '$func_normal_abspath_result')
                                                )
                                              }
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:func_normal_abspath_result)
                                          op: assign_op.Equal
                                          rhs: {<'/'>}
                                          spids: [4727]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [4713 4724]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4693 4706]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_normal_abspath_tcomponent)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {($ Id.VSub_DollarName '$ECHO')} 
                                        {(DQ ($ Id.VSub_DollarName '$func_normal_abspath_tpath'))}
                                      )
                                      (C {($ Id.VSub_DollarName '$SED')} {<-e>} 
                                        {(DQ ($ Id.VSub_DollarName '$_G_pathcar'))}
                                      )
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [4740]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_normal_abspath_tpath)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {($ Id.VSub_DollarName '$ECHO')} 
                                        {(DQ ($ Id.VSub_DollarName '$func_normal_abspath_tpath'))}
                                      )
                                      (C {($ Id.VSub_DollarName '$SED')} {<-e>} 
                                        {(DQ ($ Id.VSub_DollarName '$_G_pathcdr'))}
                                      )
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [4767]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$func_normal_abspath_tcomponent')}
                      arms: [
                        (case_arm
                          pat_list: [{(DQ )}]
                          spids: [4805 4807 4814 -1]
                        )
                        (case_arm
                          pat_list: [{<..>}]
                          action: [
                            (C {<func_dirname>} 
                              {(DQ ($ Id.VSub_DollarName '$func_normal_abspath_result'))}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:func_normal_abspath_result)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$func_dirname_result')}
                                  spids: [4832]
                                )
                              ]
                            )
                          ]
                          spids: [4817 4818 4836 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (C {<func_append>} {<func_normal_abspath_result>} 
                              {(DQ <'/'> ($ Id.VSub_DollarName '$func_normal_abspath_tcomponent'))}
                            )
                          ]
                          spids: [4839 4840 4857 -1]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_normal_abspath_result)
                  op: assign_op.Equal
                  rhs: 
                    {($ Id.VSub_DollarName '$func_normal_abspath_altnamespace') 
                      ($ Id.VSub_DollarName '$func_normal_abspath_result')
                    }
                  spids: [4870]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_notquiet
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {($ Id.VSub_DollarName '$opt_quiet')})
                (C {<func_echo>} 
                  {
                    (braced_var_sub
                      token: <Id.VSub_Number 1>
                      suffix_op: 
                        (suffix_op.Unary
                          tok: <Id.VTest_Plus '+'>
                          arg_word: {(DQ ($ Id.VSub_At '$@'))}
                        )
                    )
                  }
                )
              ]
            )
            (C {<Id.Lit_Colon ':'>})
          ]
        )
    )
    (command.ShFunction
      name: func_relative_path
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_relative_path_result)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [4954]
                )
              ]
            )
            (C {<func_normal_abspath>} {(DQ ($ Id.VSub_Number '$1'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_relative_path_tlibdir)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_normal_abspath_result')}
                  spids: [4964]
                )
              ]
            )
            (C {<func_normal_abspath>} {(DQ ($ Id.VSub_Number '$2'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_relative_path_tbindir)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_normal_abspath_result')}
                  spids: [4975]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: (C {<Id.Lit_Colon ':'>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$func_relative_path_tbindir')}
                      arms: [
                        (case_arm
                          pat_list: [{($ Id.VSub_DollarName '$func_relative_path_tlibdir')}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:func_relative_path_tcancelled)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [5011]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [5003 5004 5017 -1]
                        )
                        (case_arm
                          pat_list: [
                            {($ Id.VSub_DollarName '$func_relative_path_tlibdir') <Id.Lit_Star '*'>}
                          ]
                          action: [
                            (C {<func_stripname>} 
                              {(DQ ($ Id.VSub_DollarName '$func_relative_path_tlibdir'))} {(SQ )} {(DQ ($ Id.VSub_DollarName '$func_relative_path_tbindir'))}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:func_relative_path_tcancelled)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$func_stripname_result')}
                                  spids: [5043]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {<-z>} 
                                              {
                                                (DQ 
                                                  ($ Id.VSub_DollarName '$func_relative_path_result')
                                                )
                                              }
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:func_relative_path_result)
                                          op: assign_op.Equal
                                          rhs: {<.>}
                                          spids: [5061]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [5047 5058]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [5020 5022 5071 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (C {<func_dirname>} {($ Id.VSub_DollarName '$func_relative_path_tlibdir')})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:func_relative_path_tlibdir)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$func_dirname_result')}
                                  spids: [5083]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {<-z>} 
                                              {
                                                (DQ 
                                                  ($ Id.VSub_DollarName '$func_relative_path_tlibdir')
                                                )
                                              }
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:func_relative_path_result)
                                          op: assign_op.Equal
                                          rhs: 
                                            {<'../'> 
                                              ($ Id.VSub_DollarName '$func_relative_path_result')
                                            }
                                          spids: [5105]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:func_relative_path_tcancelled)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$func_relative_path_tbindir')}
                                          spids: [5110]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [5087 5098]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:func_relative_path_result)
                                  op: assign_op.Equal
                                  rhs: {<'../'> ($ Id.VSub_DollarName '$func_relative_path_result')}
                                  spids: [5120]
                                )
                              ]
                            )
                          ]
                          spids: [5074 5075 5125 -1]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<func_stripname>} {(SQ )} {(SQ <'/'>)} 
              {(DQ ($ Id.VSub_DollarName '$func_relative_path_result'))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_relative_path_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_stripname_result')}
                  spids: [5153]
                )
              ]
            )
            (C {<func_stripname>} {(SQ <'/'>)} {(SQ <'/'>)} 
              {(DQ ($ Id.VSub_DollarName '$func_relative_path_tcancelled'))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$func_stripname_result'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<func_append>} {<func_relative_path_result>} 
                      {(DQ <'/'> ($ Id.VSub_DollarName '$func_stripname_result'))}
                    )
                  ]
                  spids: [5172 5183]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$func_relative_path_result'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<func_stripname>} {(SQ <'./'>)} {(SQ )} 
                      {(DQ ($ Id.VSub_DollarName '$func_relative_path_result'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_relative_path_result)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_stripname_result')}
                          spids: [5232]
                        )
                      ]
                    )
                  ]
                  spids: [5204 5215]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$func_relative_path_result'))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:func_relative_path_result)
                      op: assign_op.Equal
                      rhs: {<.>}
                      spids: [5250]
                    )
                  ]
                )
              ]
            )
            (C {<Id.Lit_Colon ':'>})
          ]
        )
    )
    (command.ShFunction
      name: func_quote_for_eval
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_quote_for_eval_unquoted_result)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [5300]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_quote_for_eval_result)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [5303]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: (C {<test>} {<0>} {<-lt>} {($ Id.VSub_Pound '$#')})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ Id.VSub_Number '$1')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\\\'>
                              ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\"'>
                              ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
                            }
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_G_unquoted_arg)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<printf>} {(SQ <'%s\\n'>)} 
                                                {(DQ ($ Id.VSub_Number '$1'))}
                                              )
                                              (C {($ Id.VSub_DollarName '$SED')} 
                                                {(DQ ($ Id.VSub_DollarName '$sed_quote_subst'))}
                                              )
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [5338]
                                )
                              ]
                            )
                          ]
                          spids: [5327 5335 5362 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_G_unquoted_arg)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number '$1')}
                                  spids: [5369]
                                )
                              ]
                            )
                          ]
                          spids: [5365 5366 5372 -1]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {<-n>} 
                                      {
                                        (DQ 
                                          ($ Id.VSub_DollarName 
'$func_quote_for_eval_unquoted_result'
                                          )
                                        )
                                      }
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<func_append>} {<func_quote_for_eval_unquoted_result>} 
                              {(DQ <' '> ($ Id.VSub_DollarName '$_G_unquoted_arg'))}
                            )
                          ]
                          spids: [5378 5389]
                        )
                      ]
                      else_action: [
                        (C {<func_append>} {<func_quote_for_eval_unquoted_result>} 
                          {(DQ ($ Id.VSub_DollarName '$_G_unquoted_arg'))}
                        )
                      ]
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$_G_unquoted_arg')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\['>
                              ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\~'>) 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\#'>
                              ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\^'>) 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\&'>
                              ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'>) 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\('>
                              ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'>) 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\{'>
                              ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\}'>) 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\|'>
                              ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\;'>) 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\<'>
                              ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\>'>) 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\?'>
                              ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''>) 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\ '>
                              ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\t'>) <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
                            }
                            {<Id.Lit_Star '*'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>}
                            {(DQ )}
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_G_quoted_arg)
                                  op: assign_op.Equal
                                  rhs: 
                                    {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                      ($ Id.VSub_DollarName '$_G_unquoted_arg') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                                    }
                                  spids: [5477]
                                )
                              ]
                            )
                          ]
                          spids: [5445 5474 5483 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_G_quoted_arg)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$_G_unquoted_arg')}
                                  spids: [5490]
                                )
                              ]
                            )
                          ]
                          spids: [5486 5487 5494 -1]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {<-n>} 
                                      {(DQ ($ Id.VSub_DollarName '$func_quote_for_eval_result'))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<func_append>} {<func_quote_for_eval_result>} 
                              {(DQ <' '> ($ Id.VSub_DollarName '$_G_quoted_arg'))}
                            )
                          ]
                          spids: [5501 5512]
                        )
                      ]
                      else_action: [
                        (C {<func_append>} {<func_quote_for_eval_result>} 
                          {(DQ ($ Id.VSub_DollarName '$_G_quoted_arg'))}
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: func_quote_for_expand
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.Case
              to_match: {($ Id.VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\\\'>
                      ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\"'>
                      ) <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_G_arg)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {($ Id.VSub_DollarName '$ECHO')} {(DQ ($ Id.VSub_Number '$1'))})
                                      (C {($ Id.VSub_DollarName '$SED')} {<-e>} 
                                        {(DQ ($ Id.VSub_DollarName '$sed_double_quote_subst'))} {<-e>} {(DQ ($ Id.VSub_DollarName '$sed_double_backslash'))}
                                      )
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [5590]
                        )
                      ]
                    )
                  ]
                  spids: [5580 5587 5622 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_G_arg)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [5629]
                        )
                      ]
                    )
                  ]
                  spids: [5625 5626 5632 -1]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$_G_arg')}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\['>
                      ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\~'>) 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\#'>
                      ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\^'>) 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\&'>
                      ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'>) 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\('>
                      ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'>) 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\{'>
                      ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\}'>) 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\|'>
                      ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\;'>) 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\<'>
                      ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\>'>) 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\?'>
                      ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''>) 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\ '>
                      ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\t'>) <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
                    }
                    {<Id.Lit_Star '*'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>}
                    {(DQ )}
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_G_arg)
                          op: assign_op.Equal
                          rhs: 
                            {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                              ($ Id.VSub_DollarName '$_G_arg') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                            }
                          spids: [5694]
                        )
                      ]
                    )
                  ]
                  spids: [5662 5691 5700 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_quote_for_expand_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$_G_arg')}
                  spids: [5707]
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                      {(DQ ($ Id.VSub_DollarName '$_G_HAVE_XSI_OPS'))}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<eval>} 
              {
                (SQ <'func_stripname ()\n'> <'  {\n'> <'    $debug_cmd\n'> <'\n'> 
                  <'    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\n'> <'    # positional parameters, so assign one to ordinary variable first.\n'> 
                  <'    func_stripname_result=$3\n'> <'    func_stripname_result=${func_stripname_result#"$1"}\n'> 
                  <'    func_stripname_result=${func_stripname_result%"$2"}\n'> <'  }'>
                )
              }
            )
          ]
          spids: [5732 5745]
        )
      ]
      else_action: [
        (command.ShFunction
          name: func_stripname
          body: 
            (BraceGroup
              children: [
                (C {($ Id.VSub_DollarName '$debug_cmd')})
                (command.Case
                  to_match: {($ Id.VSub_Number '$2')}
                  arms: [
                    (case_arm
                      pat_list: [{<.> <Id.Lit_Star '*'>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:func_stripname_result)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (C {($ Id.VSub_DollarName '$ECHO')} 
                                            {(DQ ($ Id.VSub_Number '$3'))}
                                          )
                                          (C {($ Id.VSub_DollarName '$SED')} {<-e>} 
                                            {(DQ <'s%^'> ($ Id.VSub_Number '$1') <'%%'>)} {<-e>} 
                                            {
                                              (DQ <'s%'> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\\\'>
                                                ) ($ Id.VSub_Number '$2') <Id.Lit_Dollar '$'> <'%%'>
                                              )
                                            }
                                          )
                                        ]
                                        negated: F
                                      )
                                  )
                                }
                              spids: [5790]
                            )
                          ]
                        )
                      ]
                      spids: [5786 5788 5827 -1]
                    )
                    (case_arm
                      pat_list: [{<Id.Lit_Star '*'>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:func_stripname_result)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (C {($ Id.VSub_DollarName '$ECHO')} 
                                            {(DQ ($ Id.VSub_Number '$3'))}
                                          )
                                          (C {($ Id.VSub_DollarName '$SED')} {<-e>} 
                                            {(DQ <'s%^'> ($ Id.VSub_Number '$1') <'%%'>)} {<-e>} {(DQ <'s%'> ($ Id.VSub_Number '$2') <Id.Lit_Dollar '$'> <'%%'>)}
                                          )
                                        ]
                                        negated: F
                                      )
                                  )
                                }
                              spids: [5833]
                            )
                          ]
                        )
                      ]
                      spids: [5830 5831 5866 -1]
                    )
                  ]
                )
              ]
            )
        )
      ]
    )
    (command.ShFunction
      name: func_show_eval
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_cmd)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [5905]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_fail_exp)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Number 2>
                        suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{(SQ <':'>)})
                      )
                    }
                  spids: [5909]
                )
              ]
            )
            (C {<func_quote_for_expand>} {(DQ ($ Id.VSub_DollarName '$_G_cmd'))})
            (C {<eval>} {(DQ <'func_notquiet '> ($ Id.VSub_DollarName '$func_quote_for_expand_result'))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                (BraceGroup
                  children: [
                    (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_G_cmd'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_G_status)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '$?')}
                          spids: [5950]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {<0>} {<-ne>} {(DQ ($ Id.VSub_DollarName '$_G_status'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<eval>} 
                              {
                                (DQ <'(exit '> ($ Id.VSub_DollarName '$_G_status') <'); '> 
                                  ($ Id.VSub_DollarName '$_G_fail_exp')
                                )
                              }
                            )
                          ]
                          spids: [5954 5967]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_show_eval_locale
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_cmd)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [6016]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_fail_exp)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Number 2>
                        suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{(SQ <':'>)})
                      )
                    }
                  spids: [6020]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {($ Id.VSub_DollarName '$opt_quiet')})
                (BraceGroup
                  children: [
                    (C {<func_quote_for_expand>} {(DQ ($ Id.VSub_DollarName '$_G_cmd'))})
                    (C {<eval>} 
                      {(DQ <'func_echo '> ($ Id.VSub_DollarName '$func_quote_for_expand_result'))}
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                (BraceGroup
                  children: [
                    (C {<eval>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$_G_user_locale') <'\n'> <'\t    '> 
                          ($ Id.VSub_DollarName '$_G_cmd')
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_G_status)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '$?')}
                          spids: [6074]
                        )
                      ]
                    )
                    (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_G_safe_locale'))})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {<0>} {<-ne>} {(DQ ($ Id.VSub_DollarName '$_G_status'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<eval>} 
                              {
                                (DQ <'(exit '> ($ Id.VSub_DollarName '$_G_status') <'); '> 
                                  ($ Id.VSub_DollarName '$_G_fail_exp')
                                )
                              }
                            )
                          ]
                          spids: [6085 6098]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_tr_sh
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.Case
              to_match: {($ Id.VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>}
                    {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Id.KW_Bang '!'> <a-zA-Z0-9_> 
                      <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_tr_sh_result)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {($ Id.VSub_DollarName '$ECHO')} {(DQ ($ Id.VSub_Number '$1'))})
                                      (C {($ Id.VSub_DollarName '$SED')} {<-e>} 
                                        {(SQ <'s/^\\([0-9]\\)/_\\1/'>)} {<-e>} {(SQ <'s/[^a-zA-Z0-9_]/_/g'>)}
                                      )
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [6173]
                        )
                      ]
                    )
                  ]
                  spids: [6157 6170 6207 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_tr_sh_result)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [6215]
                        )
                      ]
                    )
                  ]
                  spids: [6210 6212 6219 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_verbose
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {($ Id.VSub_DollarName '$opt_verbose')})
                (C {<func_echo>} {(DQ ($ Id.VSub_Star '$*'))})
              ]
            )
            (C {<Id.Lit_Colon ':'>})
          ]
        )
    )
    (command.ShFunction
      name: func_warn_and_continue
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {($ Id.VSub_DollarName '$require_term_colors')})
            (command.Simple
              words: [
                {<func_echo_infix_1>}
                {(DQ (${ Id.VSub_Name tc_red) <warning> ($ Id.VSub_DollarName '$tc_reset'))}
                {(DQ ($ Id.VSub_Star '$*'))}
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: func_warning
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.Case
              to_match: {(DQ <' '> ($ Id.VSub_DollarName '$warning_categories') <' '>)}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_Number '$1') <' '>) <Id.Lit_Star '*'>}
                  ]
                  spids: [6358 6365 6367 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<func_internal_error>} 
                      {(DQ <'invalid warning category \''> ($ Id.VSub_Number '$1') <'\''>)}
                    )
                  ]
                  spids: [6370 6371 6381 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_category)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [6388]
                )
              ]
            )
            (C {<shift>})
            (command.Case
              to_match: {(DQ <' '> ($ Id.VSub_DollarName '$opt_warning_types') <' '>)}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName '$_G_category') <' '>) 
                      <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (C {($ Id.VSub_DollarName '$warning_func')} 
                      {
                        (braced_var_sub
                          token: <Id.VSub_Number 1>
                          suffix_op: 
                            (suffix_op.Unary
                              tok: <Id.VTest_Plus '+'>
                              arg_word: {(DQ ($ Id.VSub_At '$@'))}
                            )
                        )
                      }
                    )
                  ]
                  spids: [6407 6414 6426 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_sort_ver
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.Pipeline
              children: [
                (C {<printf>} {(SQ <'%s\\n%s\\n'>)} {(DQ ($ Id.VSub_Number '$1'))} 
                  {(DQ ($ Id.VSub_Number '$2'))}
                )
                (C {<sort>} {<-t.>} {<-k>} {<1> <Id.Lit_Comma ','> <1n>} {<-k>} 
                  {<2> <Id.Lit_Comma ','> <2n>} {<-k>} {<3> <Id.Lit_Comma ','> <3n>} {<-k>} {<4> <Id.Lit_Comma ','> <4n>} {<-k>} 
                  {<5> <Id.Lit_Comma ','> <5n>} {<-k>} {<6> <Id.Lit_Comma ','> <6n>} {<-k>} {<7> <Id.Lit_Comma ','> <7n>} {<-k>} 
                  {<8> <Id.Lit_Comma ','> <8n>} {<-k>} {<9> <Id.Lit_Comma ','> <9n>}
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: func_lt_ver
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {<test>} {(DQ <x> ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='>} 
              {<x> 
                (command_sub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<func_sort_ver>} {(DQ ($ Id.VSub_Number '$1'))} 
                          {(DQ ($ Id.VSub_Number '$2'))}
                        )
                        (C {($ Id.VSub_DollarName '$SED')} {<1q>})
                      ]
                      negated: F
                    )
                )
              }
            )
          ]
        )
    )
    (command.Sentence
      child: 
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:scriptversion)
              op: assign_op.Equal
              rhs: {<2014-01-07.03>}
              spids: [6645]
            )
          ]
        )
      terminator: <Id.Op_Semi _>
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:usage)
          op: assign_op.Equal
          rhs: {(SQ <'$progpath [OPTION]...'>)}
          spids: [6850]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:usage_message)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'       --debug        enable verbose shell tracing\n'> 
                <'   -W, --warnings=CATEGORY\n'> <'                      report the warnings falling in CATEGORY [all]\n'> 
                <'   -v, --verbose      verbosely report processing\n'> <'       --version      print version information and exit\n'> 
                <'   -h, --help         print short or long help message and exit\n'>
              )
            }
          spids: [6865]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:long_help_message)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'\n'> <'Warning categories include:\n'> 
                <'       \'all\'          show all warnings\n'> <'       \'none\'         turn off all the warnings\n'> 
                <'       \'error\'        warnings are treated as fatal errors'>
              )
            }
          spids: [6880]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:fatal_help)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'Try \''> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                <'progname --help\' for more information.'>
              )
            }
          spids: [6893]
        )
      ]
    )
    (command.ShFunction
      name: func_hookable
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {<func_append>} {<hookable_fns>} {(DQ <' '> ($ Id.VSub_Number '$1'))})
          ]
        )
    )
    (command.ShFunction
      name: func_add_hook
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.Case
              to_match: {(DQ <' '> ($ Id.VSub_DollarName '$hookable_fns') <' '>)}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_Number '$1') <' '>) <Id.Lit_Star '*'>}
                  ]
                  spids: [6995 7002 7004 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<func_fatal_error>} 
                      {(DQ <'\''> ($ Id.VSub_Number '$1') <'\' does not accept hook functions.'>)}
                    )
                  ]
                  spids: [7007 7008 7018 -1]
                )
              ]
            )
            (C {<eval>} {<func_append>} {(${ Id.VSub_Number 1) <_hooks>} {(SQ <'" $2"'>)})
          ]
        )
    )
    (command.ShFunction
      name: func_remove_hook
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {<eval>} 
              {(${ Id.VSub_Number 1) <Id.Lit_VarLike '_hooks='> (SQ <'`$ECHO "\\$'>) 
                ($ Id.VSub_Number '$1') (SQ <'_hooks" |$SED "s| '>) ($ Id.VSub_Number '$2') (SQ <'||"`'>)
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: func_run_hooks
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.Case
              to_match: {(DQ <' '> ($ Id.VSub_DollarName '$hookable_fns') <' '>)}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_Number '$1') <' '>) <Id.Lit_Star '*'>}
                  ]
                  spids: [7129 7136 7138 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<func_fatal_error>} 
                      {(DQ <'\''> ($ Id.VSub_Number '$1') <'\' does not support hook funcions.n'>)}
                    )
                  ]
                  spids: [7141 7142 7152 -1]
                )
              ]
            )
            (command.Sentence
              child: 
                (C {<eval>} 
                  {<Id.Lit_VarLike '_G_hook_fns='> 
                    (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) ($ Id.VSub_Number '$1') <_hooks>
                  }
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.ForEach
              iter_name: _G_hook
              iter_words: [{($ Id.VSub_DollarName '$_G_hook_fns')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<eval>} {($ Id.VSub_DollarName '$_G_hook')} {(SQ <'"$@"'>)})
                    (C {<eval>} 
                      {<Id.Lit_VarLike '_G_hook_result='> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        ) (${ Id.VSub_Name _G_hook) <_result>
                      }
                    )
                    (command.Sentence
                      child: 
                        (C {<eval>} {<set>} {<dummy>} {(DQ ($ Id.VSub_DollarName '$_G_hook_result'))})
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                )
            )
            (C {<func_quote_for_eval>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_Plus '+'>
                      arg_word: {(DQ ($ Id.VSub_At '$@'))}
                    )
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_run_hooks_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_quote_for_eval_result')}
                  spids: [7240]
                )
              ]
            )
          ]
        )
    )
    (C {<func_hookable>} {<func_options>})
    (command.ShFunction
      name: func_options
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {<func_options_prep>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_Plus '+'>
                      arg_word: {(DQ ($ Id.VSub_At '$@'))}
                    )
                )
              }
            )
            (C {<eval>} {<func_parse_options>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name func_options_prep_result>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_Plus '+'>
                      arg_word: {(DQ ($ Id.VSub_DollarName '$func_options_prep_result'))}
                    )
                )
              }
            )
            (C {<eval>} {<func_validate_options>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name func_parse_options_result>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_Plus '+'>
                      arg_word: {(DQ ($ Id.VSub_DollarName '$func_parse_options_result'))}
                    )
                )
              }
            )
            (C {<eval>} {<func_run_hooks>} {<func_options>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name func_validate_options_result>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_Plus '+'>
                      arg_word: {(DQ ($ Id.VSub_DollarName '$func_validate_options_result'))}
                    )
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_options_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_run_hooks_result')}
                  spids: [7541]
                )
              ]
            )
          ]
        )
    )
    (C {<func_hookable>} {<func_options_prep>})
    (command.ShFunction
      name: func_options_prep
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:opt_verbose)
                  op: assign_op.Equal
                  rhs: {<false>}
                  spids: [7592]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:opt_warning_types)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [7596]
                )
              ]
            )
            (C {<func_run_hooks>} {<func_options_prep>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_Plus '+'>
                      arg_word: {(DQ ($ Id.VSub_At '$@'))}
                    )
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_options_prep_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_run_hooks_result')}
                  spids: [7618]
                )
              ]
            )
          ]
        )
    )
    (C {<func_hookable>} {<func_parse_options>})
    (command.ShFunction
      name: func_parse_options
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_parse_options_result)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [7650]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: (C {<test>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (C {<func_run_hooks>} {<func_parse_options>} 
                      {
                        (braced_var_sub
                          token: <Id.VSub_Number 1>
                          suffix_op: 
                            (suffix_op.Unary
                              tok: <Id.VTest_Plus '+'>
                              arg_word: {(DQ ($ Id.VSub_At '$@'))}
                            )
                        )
                      }
                    )
                    (command.Sentence
                      child: 
                        (C {<eval>} {<set>} {<dummy>} 
                          {(DQ ($ Id.VSub_DollarName '$func_run_hooks_result'))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<test>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Break break>
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_G_opt)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [7731]
                        )
                      ]
                    )
                    (C {<shift>})
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$_G_opt')}
                      arms: [
                        (case_arm
                          pat_list: [{<--debug>} {<-x>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:debug_cmd)
                                  op: assign_op.Equal
                                  rhs: {(SQ <'set -x'>)}
                                  spids: [7750]
                                )
                              ]
                            )
                            (C {<func_echo>} {(DQ <'enabling shell trace mode'>)})
                            (C {($ Id.VSub_DollarName '$debug_cmd')})
                          ]
                          spids: [7745 7748 7766 -1]
                        )
                        (case_arm
                          pat_list: [{<--no-warnings>} {<--no-warning>} {<--no-warn>}]
                          action: [
                            (C {<set>} {<dummy>} {<--warnings>} {<none>} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Number 1>
                                  suffix_op: 
                                    (suffix_op.Unary
                                      tok: <Id.VTest_Plus '+'>
                                      arg_word: {(DQ ($ Id.VSub_At '$@'))}
                                    )
                                )
                              }
                            )
                            (C {<shift>})
                          ]
                          spids: [7770 7775 7798 -1]
                        )
                        (case_arm
                          pat_list: [{<--warnings>} {<--warning>} {<-W>}]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DAmp Id.Op_DAmp]
                              children: [
                                (C {<test>} {($ Id.VSub_Pound '$#')} {<Id.Lit_Equals '='>} {<0>})
                                (C {<func_missing_arg>} {($ Id.VSub_DollarName '$_G_opt')})
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Break break>
                                )
                              ]
                            )
                            (command.Case
                              to_match: 
                                {
                                  (DQ <' '> ($ Id.VSub_DollarName '$warning_categories') <' '> 
                                    ($ Id.VSub_Number '$1')
                                  )
                                }
                              arms: [
                                (case_arm
                                  pat_list: [
                                    {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_Number '$1') <' '>) 
                                      <Id.Lit_Star '*'>
                                    }
                                  ]
                                  action: [
                                    (C {<func_append_uniq>} {<opt_warning_types>} 
                                      {(DQ <' '> ($ Id.VSub_Number '$1'))}
                                    )
                                  ]
                                  spids: [7841 7848 7865 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'> <all>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:opt_warning_types)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$warning_categories')}
                                          spids: [7873]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [7868 7870 7877 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'> <none>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:opt_warning_types)
                                          op: assign_op.Equal
                                          rhs: {<none>}
                                          spids: [7885]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:warning_func)
                                          op: assign_op.Equal
                                          rhs: {<Id.Lit_Colon ':'>}
                                          spids: [7889]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [7880 7882 7893 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'> <error>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:opt_warning_types)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$warning_categories')}
                                          spids: [7901]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:warning_func)
                                          op: assign_op.Equal
                                          rhs: {<func_fatal_error>}
                                          spids: [7905]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [7896 7898 7909 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [
                                    (C {<func_fatal_error>} 
                                      {
                                        (DQ <'unsupported warning category: \''> 
                                          ($ Id.VSub_Number '$1') <'\''>
                                        )
                                      }
                                    )
                                  ]
                                  spids: [7912 7913 7927 -1]
                                )
                              ]
                            )
                            (C {<shift>})
                          ]
                          spids: [7802 7807 7936 -1]
                        )
                        (case_arm
                          pat_list: [{<--verbose>} {<-v>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:opt_verbose)
                                  op: assign_op.Equal
                                  rhs: {<Id.Lit_Colon ':'>}
                                  spids: [7945]
                                )
                              ]
                            )
                          ]
                          spids: [7940 7943 7948 -1]
                        )
                        (case_arm
                          pat_list: [{<--version>}]
                          action: [(C {<func_version>})]
                          spids: [7951 7952 7956 -1]
                        )
                        (case_arm
                          pat_list: [
                            {<-> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'>)}
                            {<-h>}
                          ]
                          action: [(C {<func_usage>})]
                          spids: [7959 7963 7967 -1]
                        )
                        (case_arm
                          pat_list: [{<--help>}]
                          action: [(C {<func_help>})]
                          spids: [7970 7971 7975 -1]
                        )
                        (case_arm
                          pat_list: [{<--> <Id.Lit_Star '*'> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}]
                          action: [
                            (C {<func_split_equals>} {(DQ ($ Id.VSub_DollarName '$_G_opt'))})
                            (C {<set>} {<dummy>} {(DQ ($ Id.VSub_DollarName '$func_split_equals_lhs'))} 
                              {(DQ ($ Id.VSub_DollarName '$func_split_equals_rhs'))} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Number 1>
                                  suffix_op: 
                                    (suffix_op.Unary
                                      tok: <Id.VTest_Plus '+'>
                                      arg_word: {(DQ ($ Id.VSub_At '$@'))}
                                    )
                                )
                              }
                            )
                            (C {<shift>})
                          ]
                          spids: [7983 7987 8022 -1]
                        )
                        (case_arm
                          pat_list: [{<-W> <Id.Lit_Star '*'>}]
                          action: [
                            (C {<func_split_short_opt>} {(DQ ($ Id.VSub_DollarName '$_G_opt'))})
                            (C {<set>} {<dummy>} 
                              {(DQ ($ Id.VSub_DollarName '$func_split_short_opt_name'))} {(DQ ($ Id.VSub_DollarName '$func_split_short_opt_arg'))} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Number 1>
                                  suffix_op: 
                                    (suffix_op.Unary
                                      tok: <Id.VTest_Plus '+'>
                                      arg_word: {(DQ ($ Id.VSub_At '$@'))}
                                    )
                                )
                              }
                            )
                            (C {<shift>})
                          ]
                          spids: [8030 8032 8068 -1]
                        )
                        (case_arm
                          pat_list: [
                            {<-> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'>) 
                              <Id.Lit_Star '*'>
                            }
                            {<-h> <Id.Lit_Star '*'>}
                            {<-v> <Id.Lit_Star '*'>}
                            {<-x> <Id.Lit_Star '*'>}
                          ]
                          action: [
                            (C {<func_split_short_opt>} {(DQ ($ Id.VSub_DollarName '$_G_opt'))})
                            (C {<set>} {<dummy>} 
                              {(DQ ($ Id.VSub_DollarName '$func_split_short_opt_name'))} {(DQ <-> ($ Id.VSub_DollarName '$func_split_short_opt_arg'))} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Number 1>
                                  suffix_op: 
                                    (suffix_op.Unary
                                      tok: <Id.VTest_Plus '+'>
                                      arg_word: {(DQ ($ Id.VSub_At '$@'))}
                                    )
                                )
                              }
                            )
                            (C {<shift>})
                          ]
                          spids: [8076 8088 8125 -1]
                        )
                        (case_arm
                          pat_list: [{<-->}]
                          action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                          spids: [8129 8130 8134 -1]
                        )
                        (case_arm
                          pat_list: [{<-> <Id.Lit_Star '*'>}]
                          action: [
                            (C {<func_fatal_help>} 
                              {
                                (DQ <'unrecognised option: \''> ($ Id.VSub_DollarName '$_G_opt') <'\''>)
                              }
                            )
                          ]
                          spids: [8137 8139 8149 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.Sentence
                              child: 
                                (C {<set>} {<dummy>} {(DQ ($ Id.VSub_DollarName '$_G_opt'))} 
                                  {
                                    (braced_var_sub
                                      token: <Id.VSub_Number 1>
                                      suffix_op: 
                                        (suffix_op.Unary
                                          tok: <Id.VTest_Plus '+'>
                                          arg_word: {(DQ ($ Id.VSub_At '$@'))}
                                        )
                                    )
                                  }
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [8152 8153 8177 -1]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<func_quote_for_eval>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_Plus '+'>
                      arg_word: {(DQ ($ Id.VSub_At '$@'))}
                    )
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_parse_options_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_quote_for_eval_result')}
                  spids: [8202]
                )
              ]
            )
          ]
        )
    )
    (C {<func_hookable>} {<func_validate_options>})
    (command.ShFunction
      name: func_validate_options
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$opt_warning_types'))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:opt_warning_types)
                      op: assign_op.Equal
                      rhs: {(DQ <' '> ($ Id.VSub_DollarName '$warning_categories'))}
                      spids: [8251]
                    )
                  ]
                )
              ]
            )
            (C {<func_run_hooks>} {<func_validate_options>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_Plus '+'>
                      arg_word: {(DQ ($ Id.VSub_At '$@'))}
                    )
                )
              }
            )
            (C {($ Id.VSub_DollarName '$exit_cmd')} {($ Id.VSub_DollarName '$EXIT_FAILURE')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_validate_options_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_run_hooks_result')}
                  spids: [8287]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_fatal_help
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {<eval>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <ECHO>} 
              {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                (DQ <'Usage: '> ($ Id.VSub_DollarName '$usage')) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
              }
            )
            (C {<eval>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <ECHO>} 
              {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                (DQ ($ Id.VSub_DollarName '$fatal_help')) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
              }
            )
            (C {<func_error>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_Plus '+'>
                      arg_word: {(DQ ($ Id.VSub_At '$@'))}
                    )
                )
              }
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_DollarName '$EXIT_FAILURE')}
            )
          ]
        )
    )
    (command.ShFunction
      name: func_help
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {<func_usage_message>})
            (C {($ Id.VSub_DollarName '$ECHO')} {(DQ ($ Id.VSub_DollarName '$long_help_message'))})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: func_missing_arg
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {<func_error>} {(DQ <'Missing argument for \''> ($ Id.VSub_Number '$1') <'\'.'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:exit_cmd)
                  op: assign_op.Equal
                  rhs: {<Id.ControlFlow_Exit exit>}
                  spids: [8453]
                )
              ]
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp]
      children: [
        (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$_G_HAVE_XSI_OPS'))})
        (command.Subshell
          child: 
            (C {<eval>} 
              {(SQ <'x=a/b/c;\n'> <'      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"'>)}
            )
          redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_G_HAVE_XSI_OPS)
              op: assign_op.Equal
              rhs: {<yes>}
              spids: [8500]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<test>} {<yes>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$_G_HAVE_XSI_OPS'))})
              ]
            )
          action: [
            (C {<eval>} 
              {
                (SQ <'func_split_equals ()\n'> <'  {\n'> <'      $debug_cmd\n'> <'\n'> 
                  <'      func_split_equals_lhs=${1%%=*}\n'> <'      func_split_equals_rhs=${1#*=}\n'> <'      test "x$func_split_equals_lhs" = "x$1" \\\n'> 
                  <'        && func_split_equals_rhs=\n'> <'  }'>
                )
              }
            )
          ]
          spids: [8504 8516]
        )
      ]
      else_action: [
        (command.ShFunction
          name: func_split_equals
          body: 
            (BraceGroup
              children: [
                (C {($ Id.VSub_DollarName '$debug_cmd')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:func_split_equals_lhs)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<expr>} {(DQ <x> ($ Id.VSub_Number '$1'))} {<Id.Lit_Colon ':'>} 
                                {(SQ <'x\\([^=]*\\)'>)}
                              )
                          )
                        }
                      spids: [8557]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:func_split_equals_rhs)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [8580]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<test>} {(DQ <x> ($ Id.VSub_DollarName '$func_split_equals_lhs'))} 
                      {<Id.Lit_Equals '='>} {(DQ <x> ($ Id.VSub_Number '$1'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_split_equals_rhs)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (C {<expr>} {(DQ <x> ($ Id.VSub_Number '$1'))} {<Id.Lit_Colon ':'>} 
                                    {(SQ <'x[^=]*=\\(.*\\)$'>)}
                                  )
                              )
                            }
                          spids: [8601]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<test>} {<yes>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$_G_HAVE_XSI_OPS'))})
              ]
            )
          action: [
            (C {<eval>} 
              {
                (SQ <'func_split_short_opt ()\n'> <'  {\n'> <'      $debug_cmd\n'> <'\n'> 
                  <'      func_split_short_opt_arg=${1#??}\n'> <'      func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\n'> <'  }'>
                )
              }
            )
          ]
          spids: [8645 8657]
        )
      ]
      else_action: [
        (command.ShFunction
          name: func_split_short_opt
          body: 
            (BraceGroup
              children: [
                (C {($ Id.VSub_DollarName '$debug_cmd')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:func_split_short_opt_name)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<expr>} {(DQ <x> ($ Id.VSub_Number '$1'))} {<Id.Lit_Colon ':'>} 
                                {(SQ <'x-\\(.\\)'>)}
                              )
                          )
                        }
                      spids: [8696]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:func_split_short_opt_arg)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {<expr>} {(DQ <x> ($ Id.VSub_Number '$1'))} {<Id.Lit_Colon ':'>} 
                                {(SQ <'x-.\\(.*\\)$'>)}
                              )
                          )
                        }
                      spids: [8719]
                    )
                  ]
                )
              ]
            )
        )
      ]
    )
    (command.ShFunction
      name: func_usage
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {<func_usage_message>})
            (C {($ Id.VSub_DollarName '$ECHO')} 
              {
                (DQ <'Run \''> ($ Id.VSub_DollarName '$progname') <' --help |'> 
                  (braced_var_sub
                    token: <Id.VSub_Name PAGER>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<more>})
                  ) <'\' for full usage'>
                )
              }
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: func_usage_message
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {<eval>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <ECHO>} 
              {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                (DQ <'Usage: '> ($ Id.VSub_DollarName '$usage')) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
              }
            )
            (C {<echo>})
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$SED')}
                {<-n>}
                {
                  (SQ <'s|^# ||\n'> <'        /^Written by/{\n'> <'          x;p;x\n'> <'        }\n'> 
                    <'\th\n'> <'\t/^Written by/q'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_DollarName '$progpath'))}
                )
              ]
              do_fork: T
            )
            (C {<echo>})
            (C {<eval>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <ECHO>} 
              {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                (DQ ($ Id.VSub_DollarName '$usage_message')) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: func_version
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {<printf>} {(SQ <'%s\\n'>)} 
              {(DQ ($ Id.VSub_DollarName '$progname') <' '> ($ Id.VSub_DollarName '$scriptversion'))}
            )
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$SED')}
                {<-n>}
                {
                  (SQ <'\n'> <'        /(C)/!b go\n'> <'        :more\n'> <'        /\\./!{\n'> 
                    <'          N\n'> <'          s|\\n# | |\n'> <'          b more\n'> <'        }\n'> <'        :go\n'> 
                    <'        /^# Written by /,/# warranty; / {\n'> <'          s|^# ||\n'> <'          s|^# *$||\n'> 
                    <'          s|\\((C)\\)[ 0-9,-]*[ ,-]\\([1-9][0-9]* \\)|\\1 \\2|\n'> <'          p\n'> <'        }\n'> <'        /^# Written by / {\n'> <'          s|^# ||\n'> 
                    <'          p\n'> <'        }\n'> <'        /^warranty; /q'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_DollarName '$progpath'))}
                )
              ]
              do_fork: T
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_QMark '$?')}
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:scriptversion)
          op: assign_op.Equal
          rhs: {(SQ <'(GNU libtool) 2.4.6'>)}
          spids: [8975]
        )
      ]
    )
    (command.ShFunction
      name: func_echo
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_G_message)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Star '$*')}
                  spids: [9006]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_echo_IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$IFS')}
                  spids: [9011]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$nl')}
                  spids: [9015]
                )
              ]
            )
            (command.ForEach
              iter_name: _G_line
              iter_words: [{($ Id.VSub_DollarName '$_G_message')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:IFS)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_echo_IFS')}
                          spids: [9031]
                        )
                      ]
                    )
                    (C {($ Id.VSub_DollarName '$ECHO')} 
                      {
                        (DQ ($ Id.VSub_DollarName '$progname') 
                          (braced_var_sub
                            token: <Id.VSub_Name opt_mode>
                            suffix_op: 
                              (suffix_op.Unary
                                tok: <Id.VTest_Plus '+'>
                                arg_word: {<': '> ($ Id.VSub_DollarName '$opt_mode')}
                              )
                          ) <': '> ($ Id.VSub_DollarName '$_G_line')
                        )
                      }
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_echo_IFS')}
                  spids: [9053]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_warning
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {($ Id.VSub_DollarName '$warning_func')} 
              {
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_Plus '+'>
                      arg_word: {(DQ ($ Id.VSub_At '$@'))}
                    )
                )
              }
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:usage)
          op: assign_op.Equal
          rhs: {(SQ <'$progpath [OPTION]... [MODE-ARG]...'>)}
          spids: [9115]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:usage_message)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'Options:\n'> <'       --config             show all configuration variables\n'> 
                <'       --debug              enable verbose shell tracing\n'> <'   -n, --dry-run            display commands without modifying any files\n'> 
                <'       --features           display basic configuration information and exit\n'> <'       --mode=MODE          use operation mode MODE\n'> 
                <'       --no-warnings        equivalent to \'-Wnone\'\n'> <'       --preserve-dup-deps  don\'t remove duplicate dependency libraries\n'> 
                <'       --quiet, --silent    don\'t print informational messages\n'> <'       --tag=TAG            use configuration variables from tag TAG\n'> 
                <'   -v, --verbose            print more informational messages than default\n'> <'       --version            print version information\n'> 
                <'   -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [all]\n'> <'   -h, --help, --help-all   print short, long, or detailed help message\n'>
              )
            }
          spids: [9124]
        )
      ]
    )
    (command.ShFunction
      name: func_help
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {<func_usage_message>})
            (C {($ Id.VSub_DollarName '$ECHO')} 
              {
                (DQ ($ Id.VSub_DollarName '$long_help_message') <'\n'> <'\n'> 
                  <'MODE must be one of the following:\n'> <'\n'> <'       clean           remove files from the build directory\n'> 
                  <'       compile         compile a source file into a libtool object\n'> <'       execute         automatically set library path, then run a program\n'> 
                  <'       finish          complete the installation of libtool libraries\n'> <'       install         install libraries or executables\n'> 
                  <'       link            create a library or an executable\n'> <'       uninstall       remove libraries from an installed directory\n'> <'\n'> 
                  <'MODE-ARGS vary depending on the MODE.  When passed as first option,\n'> <'\'--mode=MODE\' may be abbreviated as \'MODE\' or a unique abbreviation of that.\n'> <'Try \''> 
                  ($ Id.VSub_DollarName '$progname') <' --help --mode=MODE\' for a more detailed description of MODE.\n'> <'\n'> 
                  <'When reporting a bug, please describe a test case to reproduce it and\n'> <'include the following information:\n'> <'\n'> <'       host-triplet:   '> 
                  ($ Id.VSub_DollarName '$host') <'\n'> <'       shell:          '> ($ Id.VSub_DollarName '$SHELL') <'\n'> <'       compiler:       '> 
                  ($ Id.VSub_DollarName '$LTCC') <'\n'> <'       compiler flags: '> ($ Id.VSub_DollarName '$LTCFLAGS') <'\n'> <'       linker:         '> 
                  ($ Id.VSub_DollarName '$LD') <' (gnu? '> ($ Id.VSub_DollarName '$with_gnu_ld') <')\n'> <'       version:        '> 
                  ($ Id.VSub_DollarName '$progname') <' (GNU libtool) 2.4.6\n'> <'       automake:       '> 
                  (command_sub
                    left_token: <Id.Left_Backtick '`'>
                    child: 
                      (command.Pipeline
                        children: [
                          (command.Subshell
                            child: (C {($ Id.VSub_DollarName '$AUTOMAKE')} {<--version>})
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                          )
                          (C {($ Id.VSub_DollarName '$SED')} {<1q>})
                        ]
                        negated: F
                      )
                  ) <'\n'> <'       autoconf:       '> 
                  (command_sub
                    left_token: <Id.Left_Backtick '`'>
                    child: 
                      (command.Pipeline
                        children: [
                          (command.Subshell
                            child: (C {($ Id.VSub_DollarName '$AUTOCONF')} {<--version>})
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                          )
                          (C {($ Id.VSub_DollarName '$SED')} {<1q>})
                        ]
                        negated: F
                      )
                  ) <'\n'> <'\n'> <'Report bugs to <bug-libtool@gnu.org>.\n'> 
                  <'GNU libtool home page: <http://www.gnu.org/s/libtool/>.\n'> <'General help using GNU software: <http://www.gnu.org/gethelp/>.'>
                )
              }
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:lo2o)
          op: assign_op.Equal
          rhs: 
            {<'s/'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <.lo> 
              (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'/.'> ($ Id.VSub_DollarName '$objext') <'/'>
            }
          spids: [9272]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:o2lo)
          op: assign_op.Equal
          rhs: 
            {<'s/'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <.> 
              ($ Id.VSub_DollarName '$objext') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'/.lo/'>
            }
          spids: [9281]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                      {(DQ ($ Id.VSub_DollarName '$_G_HAVE_XSI_OPS'))}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<eval>} 
              {
                (SQ <'func_lo2o ()\n'> <'  {\n'> <'    case $1 in\n'> 
                  <'      *.lo) func_lo2o_result=${1%.lo}.$objext ;;\n'> <'      *   ) func_lo2o_result=$1               ;;\n'> <'    esac\n'> <'  }'>
                )
              }
            )
            (C {<eval>} 
              {(SQ <'func_xform ()\n'> <'  {\n'> <'    func_xform_result=${1%.*}.lo\n'> <'  }'>)}
            )
          ]
          spids: [9290 9303]
        )
      ]
      else_action: [
        (command.ShFunction
          name: func_lo2o
          body: 
            (BraceGroup
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:func_lo2o_result)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Pipeline
                                children: [
                                  (C {($ Id.VSub_DollarName '$ECHO')} {(DQ ($ Id.VSub_Number '$1'))})
                                  (C {($ Id.VSub_DollarName '$SED')} 
                                    {(DQ ($ Id.VSub_DollarName '$lo2o'))}
                                  )
                                ]
                                negated: F
                              )
                          )
                        }
                      spids: [9361]
                    )
                  ]
                )
              ]
            )
        )
        (command.ShFunction
          name: func_xform
          body: 
            (BraceGroup
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:func_xform_result)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Pipeline
                                children: [
                                  (C {($ Id.VSub_DollarName '$ECHO')} {(DQ ($ Id.VSub_Number '$1'))})
                                  (C {($ Id.VSub_DollarName '$SED')} {(SQ <'s|\\.[^.]*$|.lo|'>)})
                                ]
                                negated: F
                              )
                          )
                        }
                      spids: [9394]
                    )
                  ]
                )
              ]
            )
        )
      ]
    )
    (command.ShFunction
      name: func_fatal_configuration
      body: 
        (BraceGroup
          children: [
            (C {<func__fatal_error>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_Plus '+'>
                      arg_word: {(DQ ($ Id.VSub_At '$@'))}
                    )
                )
              } {(DQ <'See the '> ($ Id.VSub_DollarName '$PACKAGE') <' documentation for more information.'>)} 
              {(DQ <'Fatal configuration error.'>)}
            )
          ]
        )
    )
    (command.ShFunction
      name: func_config
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:re_begincf)
                  op: assign_op.Equal
                  rhs: {(SQ <'^# ### BEGIN LIBTOOL'>)}
                  spids: [9487]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:re_endcf)
                  op: assign_op.Equal
                  rhs: {(SQ <'^# ### END LIBTOOL'>)}
                  spids: [9493]
                )
              ]
            )
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$SED')}
                {
                  (DQ <'1,/'> ($ Id.VSub_DollarName '$re_begincf') <' CONFIG/d;/'> 
                    ($ Id.VSub_DollarName '$re_endcf') <' CONFIG/,'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <d>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_DollarName '$progpath'))}
                )
              ]
              do_fork: T
            )
            (command.ForEach
              iter_name: tagname
              iter_words: [{($ Id.VSub_DollarName '$taglist')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Simple
                      words: [
                        {($ Id.VSub_DollarName '$SED')}
                        {<-n>}
                        {
                          (DQ <'/'> ($ Id.VSub_DollarName '$re_begincf') <' TAG CONFIG: '> 
                            ($ Id.VSub_DollarName '$tagname') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'/,/'> ($ Id.VSub_DollarName '$re_endcf') 
                            <' TAG CONFIG: '> ($ Id.VSub_DollarName '$tagname') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'/p'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(DQ ($ Id.VSub_DollarName '$progpath'))}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                )
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_QMark '$?')}
            )
          ]
        )
    )
    (command.ShFunction
      name: func_features
      body: 
        (BraceGroup
          children: [
            (C {<echo>} {(DQ <'host: '> ($ Id.VSub_DollarName '$host'))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName '$build_libtool_libs'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(DQ <'enable shared libraries'>)})]
                  spids: [9602 9615]
                )
              ]
              else_action: [(C {<echo>} {(DQ <'disable shared libraries'>)})]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName '$build_old_libs'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(DQ <'enable static libraries'>)})]
                  spids: [9638 9651]
                )
              ]
              else_action: [(C {<echo>} {(DQ <'disable static libraries'>)})]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_QMark '$?')}
            )
          ]
        )
    )
    (command.ShFunction
      name: func_enable_tag
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:tagname)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [9710]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:re_begincf)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'^# ### BEGIN LIBTOOL TAG CONFIG: '> ($ Id.VSub_DollarName '$tagname') 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                      )
                    }
                  spids: [9715]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:re_endcf)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'^# ### END LIBTOOL TAG CONFIG: '> ($ Id.VSub_DollarName '$tagname') 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        )
                      )
                    }
                  spids: [9723]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sed_extractcf)
                  op: assign_op.Equal
                  rhs: 
                    {<'/'> ($ Id.VSub_DollarName '$re_begincf') <'/'> <Id.Lit_Comma ','> <'/'> 
                      ($ Id.VSub_DollarName '$re_endcf') <'/p'>
                    }
                  spids: [9731]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$tagname')}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Id.KW_Bang '!'> <-_A-Za-z0-9> 
                      <Id.Lit_Comma ','> <'/'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (C {<func_fatal_error>} 
                      {(DQ <'invalid tag name: '> ($ Id.VSub_DollarName '$tagname'))}
                    )
                  ]
                  spids: [9753 9761 9772 -1]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$tagname')}
              arms: [
                (case_arm pat_list:[{<CC>}] spids:[9794 9795 9797 -1])
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      words: [
                                        {($ Id.VSub_DollarName '$GREP')}
                                        {(DQ ($ Id.VSub_DollarName '$re_begincf'))}
                                        {(DQ ($ Id.VSub_DollarName '$progpath'))}
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<'/dev/null'>}
                                        )
                                        (redir
                                          op: <Id.Redir_GreatAnd '2>&'>
                                          loc: (redir_loc.Fd fd:2)
                                          arg: {<1>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:taglist)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$taglist') <' '> 
                                        ($ Id.VSub_DollarName '$tagname')
                                      )
                                    }
                                  spids: [9826]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:extractedcf)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Simple
                                            words: [
                                              {($ Id.VSub_DollarName '$SED')}
                                              {<-n>}
                                              {<-e>}
                                              {(DQ ($ Id.VSub_DollarName '$sed_extractcf'))}
                                            ]
                                            redirects: [
                                              (redir
                                                op: <Id.Redir_Less '<'>
                                                loc: (redir_loc.Fd fd:0)
                                                arg: {(DQ ($ Id.VSub_DollarName '$progpath'))}
                                              )
                                            ]
                                            do_fork: T
                                          )
                                      )
                                    }
                                  spids: [9851]
                                )
                              ]
                            )
                            (C {<eval>} {(DQ ($ Id.VSub_DollarName '$extractedcf'))})
                          ]
                          spids: [9804 9823]
                        )
                      ]
                      else_action: [
                        (C {<func_error>} 
                          {(DQ <'ignoring unknown tag '> ($ Id.VSub_DollarName '$tagname'))}
                        )
                      ]
                    )
                  ]
                  spids: [9800 9801 9894 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_check_version_match
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$package_revision'))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$macro_revision'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {(DQ ($ Id.VSub_DollarName '$VERSION'))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$macro_version'))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {<-z>} 
                                              {(DQ ($ Id.VSub_DollarName '$macro_version'))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Simple
                                      words: [{<cat>}]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                        (redir
                                          op: <Id.Redir_DLess '<<'>
                                          loc: (redir_loc.Fd fd:0)
                                          arg: 
                                            (redir_param.HereDoc
                                              here_begin: {<_LT_EOF>}
                                              here_end_span_id: 10000
                                              stdin_parts: [
                                                ($ Id.VSub_DollarName '$progname')
                                                <': Version mismatch error.  This is '>
                                                ($ Id.VSub_DollarName '$PACKAGE')
                                                <' '>
                                                ($ Id.VSub_DollarName '$VERSION')
                                                <', but the\n'>
                                                ($ Id.VSub_DollarName '$progname')
                                                <
': definition of this LT_INIT comes from an older release.\n'
                                                >
                                                ($ Id.VSub_DollarName '$progname')
                                                <
': You should recreate aclocal.m4 with macros from '
                                                >
                                                ($ Id.VSub_DollarName '$PACKAGE')
                                                <' '>
                                                ($ Id.VSub_DollarName '$VERSION')
                                                <'\n'>
                                                ($ Id.VSub_DollarName '$progname')
                                                <': and run autoconf again.\n'>
                                              ]
                                            )
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                  spids: [9961 9972]
                                )
                              ]
                              else_action: [
                                (command.Simple
                                  words: [{<cat>}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<2>}
                                    )
                                    (redir
                                      op: <Id.Redir_DLess '<<'>
                                      loc: (redir_loc.Fd fd:0)
                                      arg: 
                                        (redir_param.HereDoc
                                          here_begin: {<_LT_EOF>}
                                          here_end_span_id: 10034
                                          stdin_parts: [
                                            ($ Id.VSub_DollarName '$progname')
                                            <': Version mismatch error.  This is '>
                                            ($ Id.VSub_DollarName '$PACKAGE')
                                            <' '>
                                            ($ Id.VSub_DollarName '$VERSION')
                                            <', but the\n'>
                                            ($ Id.VSub_DollarName '$progname')
                                            <': definition of this LT_INIT comes from '>
                                            ($ Id.VSub_DollarName '$PACKAGE')
                                            <' '>
                                            ($ Id.VSub_DollarName '$macro_version')
                                            <'.\n'>
                                            ($ Id.VSub_DollarName '$progname')
                                            <': You should recreate aclocal.m4 with macros from '>
                                            ($ Id.VSub_DollarName '$PACKAGE')
                                            <' '>
                                            ($ Id.VSub_DollarName '$VERSION')
                                            <'\n'>
                                            ($ Id.VSub_DollarName '$progname')
                                            <': and run autoconf again.\n'>
                                          ]
                                        )
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                            )
                          ]
                          spids: [9942 9958]
                        )
                      ]
                      else_action: [
                        (command.Simple
                          words: [{<cat>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                            (redir
                              op: <Id.Redir_DLess '<<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: 
                                (redir_param.HereDoc
                                  here_begin: {<_LT_EOF>}
                                  here_end_span_id: 10073
                                  stdin_parts: [
                                    ($ Id.VSub_DollarName '$progname')
                                    <': Version mismatch error.  This is '>
                                    ($ Id.VSub_DollarName '$PACKAGE')
                                    <' '>
                                    ($ Id.VSub_DollarName '$VERSION')
                                    <', revision '>
                                    ($ Id.VSub_DollarName '$package_revision')
                                    <',\n'>
                                    ($ Id.VSub_DollarName '$progname')
                                    <': but the definition of this LT_INIT comes from revision '>
                                    ($ Id.VSub_DollarName '$macro_revision')
                                    <'.\n'>
                                    ($ Id.VSub_DollarName '$progname')
                                    <': You should recreate aclocal.m4 with macros from revision '>
                                    ($ Id.VSub_DollarName '$package_revision')
                                    <'\n'>
                                    ($ Id.VSub_DollarName '$progname')
                                    <': of '>
                                    ($ Id.VSub_DollarName '$PACKAGE')
                                    <' '>
                                    ($ Id.VSub_DollarName '$VERSION')
                                    <' and run autoconf again.\n'>
                                  ]
                                )
                            )
                          ]
                          do_fork: T
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {($ Id.VSub_DollarName '$EXIT_MISMATCH')}
                    )
                  ]
                  spids: [9923 9939]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: libtool_options_prep
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_mode')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:opt_config)
                  op: assign_op.Equal
                  rhs: {<false>}
                  spids: [10115]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:opt_dlopen)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [10119]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:opt_dry_run)
                  op: assign_op.Equal
                  rhs: {<false>}
                  spids: [10122]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:opt_help)
                  op: assign_op.Equal
                  rhs: {<false>}
                  spids: [10126]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:opt_mode)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [10130]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:opt_preserve_dup_deps)
                  op: assign_op.Equal
                  rhs: {<false>}
                  spids: [10133]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:opt_quiet)
                  op: assign_op.Equal
                  rhs: {<false>}
                  spids: [10137]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:nonopt)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [10142]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:preserve_args)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [10145]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [{<clean>} {<clea>} {<cle>} {<cl>}]
                  action: [
                    (command.Sentence
                      child: (C {<shift>})
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (C {<set>} {<dummy>} {<--mode>} {<clean>} 
                          {
                            (braced_var_sub
                              token: <Id.VSub_Number 1>
                              suffix_op: 
                                (suffix_op.Unary
                                  tok: <Id.VTest_Plus '+'>
                                  arg_word: {(DQ ($ Id.VSub_At '$@'))}
                                )
                            )
                          }
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [10160 10167 10193 -1]
                )
                (case_arm
                  pat_list: [{<compile>} {<compil>} {<compi>} {<comp>} {<com>} {<co>} {<c>}]
                  action: [
                    (command.Sentence
                      child: (C {<shift>})
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (C {<set>} {<dummy>} {<--mode>} {<compile>} 
                          {
                            (braced_var_sub
                              token: <Id.VSub_Number 1>
                              suffix_op: 
                                (suffix_op.Unary
                                  tok: <Id.VTest_Plus '+'>
                                  arg_word: {(DQ ($ Id.VSub_At '$@'))}
                                )
                            )
                          }
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [10196 10209 10235 -1]
                )
                (case_arm
                  pat_list: [{<execute>} {<execut>} {<execu>} {<exec>} {<exe>} {<ex>} {<e>}]
                  action: [
                    (command.Sentence
                      child: (C {<shift>})
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (C {<set>} {<dummy>} {<--mode>} {<execute>} 
                          {
                            (braced_var_sub
                              token: <Id.VSub_Number 1>
                              suffix_op: 
                                (suffix_op.Unary
                                  tok: <Id.VTest_Plus '+'>
                                  arg_word: {(DQ ($ Id.VSub_At '$@'))}
                                )
                            )
                          }
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [10238 10251 10277 -1]
                )
                (case_arm
                  pat_list: [{<finish>} {<finis>} {<fini>} {<fin>} {<Id.KW_Fi fi>} {<f>}]
                  action: [
                    (command.Sentence
                      child: (C {<shift>})
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (C {<set>} {<dummy>} {<--mode>} {<finish>} 
                          {
                            (braced_var_sub
                              token: <Id.VSub_Number 1>
                              suffix_op: 
                                (suffix_op.Unary
                                  tok: <Id.VTest_Plus '+'>
                                  arg_word: {(DQ ($ Id.VSub_At '$@'))}
                                )
                            )
                          }
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [10280 10291 10317 -1]
                )
                (case_arm
                  pat_list: [{<install>} {<instal>} {<insta>} {<inst>} {<ins>} {<Id.KW_In in>} {<i>}]
                  action: [
                    (command.Sentence
                      child: (C {<shift>})
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (C {<set>} {<dummy>} {<--mode>} {<install>} 
                          {
                            (braced_var_sub
                              token: <Id.VSub_Number 1>
                              suffix_op: 
                                (suffix_op.Unary
                                  tok: <Id.VTest_Plus '+'>
                                  arg_word: {(DQ ($ Id.VSub_At '$@'))}
                                )
                            )
                          }
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [10320 10333 10359 -1]
                )
                (case_arm
                  pat_list: [{<link>} {<lin>} {<li>} {<l>}]
                  action: [
                    (command.Sentence
                      child: (C {<shift>})
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (C {<set>} {<dummy>} {<--mode>} {<link>} 
                          {
                            (braced_var_sub
                              token: <Id.VSub_Number 1>
                              suffix_op: 
                                (suffix_op.Unary
                                  tok: <Id.VTest_Plus '+'>
                                  arg_word: {(DQ ($ Id.VSub_At '$@'))}
                                )
                            )
                          }
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [10362 10369 10395 -1]
                )
                (case_arm
                  pat_list: [
                    {<uninstall>}
                    {<uninstal>}
                    {<uninsta>}
                    {<uninst>}
                    {<unins>}
                    {<unin>}
                    {<uni>}
                    {<un>}
                    {<u>}
                  ]
                  action: [
                    (command.Sentence
                      child: (C {<shift>})
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (C {<set>} {<dummy>} {<--mode>} {<uninstall>} 
                          {
                            (braced_var_sub
                              token: <Id.VSub_Number 1>
                              suffix_op: 
                                (suffix_op.Unary
                                  tok: <Id.VTest_Plus '+'>
                                  arg_word: {(DQ ($ Id.VSub_At '$@'))}
                                )
                            )
                          }
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [10398 10415 10441 -1]
                )
              ]
            )
            (C {<func_quote_for_eval>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_Plus '+'>
                      arg_word: {(DQ ($ Id.VSub_At '$@'))}
                    )
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:libtool_options_prep_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_quote_for_eval_result')}
                  spids: [10463]
                )
              ]
            )
          ]
        )
    )
    (C {<func_add_hook>} {<func_options_prep>} {<libtool_options_prep>})
    (command.ShFunction
      name: libtool_parse_options
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: (C {<test>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_G_opt)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [10519]
                        )
                      ]
                    )
                    (C {<shift>})
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$_G_opt')}
                      arms: [
                        (case_arm
                          pat_list: [{<--dry-run>} {<--dryrun>} {<-n>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:opt_dry_run)
                                  op: assign_op.Equal
                                  rhs: {<Id.Lit_Colon ':'>}
                                  spids: [10541]
                                )
                              ]
                            )
                          ]
                          spids: [10533 10538 10545 -1]
                        )
                        (case_arm
                          pat_list: [{<--config>}]
                          action: [(C {<func_config>})]
                          spids: [10549 10550 10554 -1]
                        )
                        (case_arm
                          pat_list: [{<--dlopen>} {<-dlopen>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:opt_dlopen)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: <Id.VSub_Name opt_dlopen>
                                          suffix_op: 
                                            (suffix_op.Unary
                                              tok: <Id.VTest_Plus '+'>
                                              arg_word: {($ Id.VSub_DollarName '$opt_dlopen') <'\n'>}
                                            )
                                        ) ($ Id.VSub_Number '$1')
                                      )
                                    }
                                  spids: [10564]
                                )
                              ]
                            )
                            (C {<shift>})
                          ]
                          spids: [10558 10561 10579 -1]
                        )
                        (case_arm
                          pat_list: [{<--preserve-dup-deps>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:opt_preserve_dup_deps)
                                  op: assign_op.Equal
                                  rhs: {<Id.Lit_Colon ':'>}
                                  spids: [10587]
                                )
                              ]
                            )
                          ]
                          spids: [10583 10584 10590 -1]
                        )
                        (case_arm
                          pat_list: [{<--features>}]
                          action: [(C {<func_features>})]
                          spids: [10594 10595 10599 -1]
                        )
                        (case_arm
                          pat_list: [{<--finish>}]
                          action: [
                            (command.Sentence
                              child: 
                                (C {<set>} {<dummy>} {<--mode>} {<finish>} 
                                  {
                                    (braced_var_sub
                                      token: <Id.VSub_Number 1>
                                      suffix_op: 
                                        (suffix_op.Unary
                                          tok: <Id.VTest_Plus '+'>
                                          arg_word: {(DQ ($ Id.VSub_At '$@'))}
                                        )
                                    )
                                  }
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<shift>})
                          ]
                          spids: [10603 10604 10625 -1]
                        )
                        (case_arm
                          pat_list: [{<--help>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:opt_help)
                                  op: assign_op.Equal
                                  rhs: {<Id.Lit_Colon ':'>}
                                  spids: [10632]
                                )
                              ]
                            )
                          ]
                          spids: [10629 10630 10635 -1]
                        )
                        (case_arm
                          pat_list: [{<--help-all>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:opt_help)
                                  op: assign_op.Equal
                                  rhs: {(SQ <': help-all'>)}
                                  spids: [10642]
                                )
                              ]
                            )
                          ]
                          spids: [10639 10640 10647 -1]
                        )
                        (case_arm
                          pat_list: [{<--mode>}]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DAmp Id.Op_DAmp]
                              children: [
                                (C {<test>} {($ Id.VSub_Pound '$#')} {<Id.Lit_Equals '='>} {<0>})
                                (C {<func_missing_arg>} {($ Id.VSub_DollarName '$_G_opt')})
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Break break>
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:opt_mode)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number '$1')}
                                  spids: [10673]
                                )
                              ]
                            )
                            (command.Case
                              to_match: {($ Id.VSub_Number '$1')}
                              arms: [
                                (case_arm
                                  pat_list: [
                                    {<clean>}
                                    {<compile>}
                                    {<execute>}
                                    {<finish>}
                                    {<install>}
                                    {<link>}
                                    {<relink>}
                                    {<uninstall>}
                                  ]
                                  spids: [10688 10703 10705 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [
                                    (C {<func_error>} 
                                      {
                                        (DQ <'invalid argument for '> ($ Id.VSub_DollarName '$_G_opt'))
                                      }
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:exit_cmd)
                                          op: assign_op.Equal
                                          rhs: {<Id.ControlFlow_Exit exit>}
                                          spids: [10724]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [10713 10714 10731 -1]
                                )
                              ]
                            )
                            (C {<shift>})
                          ]
                          spids: [10651 10652 10740 -1]
                        )
                        (case_arm
                          pat_list: [{<--no-silent>} {<--no-quiet>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:opt_quiet)
                                  op: assign_op.Equal
                                  rhs: {<false>}
                                  spids: [10750]
                                )
                              ]
                            )
                            (C {<func_append>} {<preserve_args>} 
                              {(DQ <' '> ($ Id.VSub_DollarName '$_G_opt'))}
                            )
                          ]
                          spids: [10744 10747 10764 -1]
                        )
                        (case_arm
                          pat_list: [{<--no-warnings>} {<--no-warning>} {<--no-warn>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:opt_warning)
                                  op: assign_op.Equal
                                  rhs: {<false>}
                                  spids: [10776]
                                )
                              ]
                            )
                            (C {<func_append>} {<preserve_args>} 
                              {(DQ <' '> ($ Id.VSub_DollarName '$_G_opt'))}
                            )
                          ]
                          spids: [10768 10773 10790 -1]
                        )
                        (case_arm
                          pat_list: [{<--no-verbose>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:opt_verbose)
                                  op: assign_op.Equal
                                  rhs: {<false>}
                                  spids: [10798]
                                )
                              ]
                            )
                            (C {<func_append>} {<preserve_args>} 
                              {(DQ <' '> ($ Id.VSub_DollarName '$_G_opt'))}
                            )
                          ]
                          spids: [10794 10795 10812 -1]
                        )
                        (case_arm
                          pat_list: [{<--silent>} {<--quiet>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:opt_quiet)
                                  op: assign_op.Equal
                                  rhs: {<Id.Lit_Colon ':'>}
                                  spids: [10822]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:opt_verbose)
                                  op: assign_op.Equal
                                  rhs: {<false>}
                                  spids: [10826]
                                )
                              ]
                            )
                            (C {<func_append>} {<preserve_args>} 
                              {(DQ <' '> ($ Id.VSub_DollarName '$_G_opt'))}
                            )
                          ]
                          spids: [10816 10819 10840 -1]
                        )
                        (case_arm
                          pat_list: [{<--tag>}]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DAmp Id.Op_DAmp]
                              children: [
                                (C {<test>} {($ Id.VSub_Pound '$#')} {<Id.Lit_Equals '='>} {<0>})
                                (C {<func_missing_arg>} {($ Id.VSub_DollarName '$_G_opt')})
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Break break>
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:opt_tag)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number '$1')}
                                  spids: [10866]
                                )
                              ]
                            )
                            (C {<func_append>} {<preserve_args>} 
                              {
                                (DQ <' '> ($ Id.VSub_DollarName '$_G_opt') <' '> ($ Id.VSub_Number '$1'))
                              }
                            )
                            (C {<func_enable_tag>} {(DQ ($ Id.VSub_Number '$1'))})
                            (C {<shift>})
                          ]
                          spids: [10844 10845 10892 -1]
                        )
                        (case_arm
                          pat_list: [{<--verbose>} {<-v>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:opt_quiet)
                                  op: assign_op.Equal
                                  rhs: {<false>}
                                  spids: [10901]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:opt_verbose)
                                  op: assign_op.Equal
                                  rhs: {<Id.Lit_Colon ':'>}
                                  spids: [10905]
                                )
                              ]
                            )
                            (C {<func_append>} {<preserve_args>} 
                              {(DQ <' '> ($ Id.VSub_DollarName '$_G_opt'))}
                            )
                          ]
                          spids: [10896 10899 10919 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.Sentence
                              child: 
                                (C {<set>} {<dummy>} {(DQ ($ Id.VSub_DollarName '$_G_opt'))} 
                                  {
                                    (braced_var_sub
                                      token: <Id.VSub_Number 1>
                                      suffix_op: 
                                        (suffix_op.Unary
                                          tok: <Id.VTest_Plus '+'>
                                          arg_word: {(DQ ($ Id.VSub_At '$@'))}
                                        )
                                    )
                                  }
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [10927 10928 10952 -1]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<func_quote_for_eval>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_Plus '+'>
                      arg_word: {(DQ ($ Id.VSub_At '$@'))}
                    )
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:libtool_parse_options_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_quote_for_eval_result')}
                  spids: [10978]
                )
              ]
            )
          ]
        )
    )
    (C {<func_add_hook>} {<func_parse_options>} {<libtool_parse_options>})
    (command.ShFunction
      name: libtool_validate_options
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<0>} {<-lt>} {($ Id.VSub_Pound '$#')})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:nonopt)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [11030]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                  spids: [11016 11027]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<Id.Lit_Colon ':'>} {<Id.Lit_Equals '='>} 
                  {(DQ ($ Id.VSub_DollarName '$debug_cmd'))}
                )
                (C {<func_append>} {<preserve_args>} {(DQ <' --debug'>)})
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$host')}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <cygwin> <Id.Lit_Star '*'>}
                    {<Id.Lit_Star '*'> <mingw> <Id.Lit_Star '*'>}
                    {<Id.Lit_Star '*'> <pw32> <Id.Lit_Star '*'>}
                    {<Id.Lit_Star '*'> <cegcc> <Id.Lit_Star '*'>}
                    {<Id.Lit_Star '*'> <solaris2> <Id.Lit_Star '*'>}
                    {<Id.Lit_Star '*'> <os2> <Id.Lit_Star '*'>}
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:opt_duplicate_compiler_generated_deps)
                          op: assign_op.Equal
                          rhs: {<Id.Lit_Colon ':'>}
                          spids: [11122]
                        )
                      ]
                    )
                  ]
                  spids: [11082 11115 11126 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:opt_duplicate_compiler_generated_deps)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$opt_preserve_dup_deps')}
                          spids: [11133]
                        )
                      ]
                    )
                  ]
                  spids: [11129 11130 11137 -1]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {($ Id.VSub_DollarName '$opt_help')})
                (BraceGroup
                  children: [
                    (C {<func_check_version_match>})
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DAmp]
                      children: [
                        (C {<test>} {<yes>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} 
                          {(DQ ($ Id.VSub_DollarName '$build_libtool_libs'))}
                        )
                        (C {<test>} {<yes>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} 
                          {(DQ ($ Id.VSub_DollarName '$build_old_libs'))}
                        )
                        (C {<func_fatal_configuration>} 
                          {(DQ <'not configured to build any kind of library'>)}
                        )
                      ]
                    )
                    (C {<eval>} 
                      {<Id.Lit_VarLike 'std_shrext='> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                        ) ($ Id.VSub_DollarName '$shrext_cmds') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                      }
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$opt_dlopen'))})
                                        (C {<test>} {<execute>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} 
                                          {(DQ ($ Id.VSub_DollarName '$opt_mode'))}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<func_error>} {(DQ <'unrecognized option \'-dlopen\''>)})
                            (command.Simple
                              words: [
                                {($ Id.VSub_DollarName '$ECHO')}
                                {(DQ ($ Id.VSub_DollarName '$help'))}
                              ]
                              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: {($ Id.VSub_DollarName '$EXIT_FAILURE')}
                            )
                          ]
                          spids: [11214 11238]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:generic_help)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$help')}
                          spids: [11271]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:help)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'Try \''> ($ Id.VSub_DollarName '$progname') <' --help --mode='> 
                                ($ Id.VSub_DollarName '$opt_mode') <'\' for more information.'>
                              )
                            }
                          spids: [11275]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (C {<func_quote_for_eval>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_Plus '+'>
                      arg_word: {(DQ ($ Id.VSub_At '$@'))}
                    )
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:libtool_validate_options_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_quote_for_eval_result')}
                  spids: [11304]
                )
              ]
            )
          ]
        )
    )
    (C {<func_add_hook>} {<func_validate_options>} {<libtool_validate_options>})
    (C {<func_options>} 
      {
        (braced_var_sub
          token: <Id.VSub_Number 1>
          suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{(DQ ($ Id.VSub_At '$@'))})
        )
      }
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<eval>} {<set>} {<dummy>} {(DQ ($ Id.VSub_DollarName '$func_options_result'))})
          terminator: <Id.Op_Semi _>
        )
        (C {<shift>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:magic)
          op: assign_op.Equal
          rhs: {(SQ <'%%%MAGIC variable%%%'>)}
          spids: [11359]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:magic_exe)
          op: assign_op.Equal
          rhs: {(SQ <'%%%MAGIC EXE variable%%%'>)}
          spids: [11364]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:extracted_archives)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [11373]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:extracted_serial)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [11375]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:exec_cmd)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [11388]
        )
      ]
    )
    (command.ShFunction
      name: func_fallback_echo
      body: 
        (BraceGroup
          children: [(C {<eval>} {(SQ <'cat <<_LTECHO_EOF\n'> <'$1\n'> <_LTECHO_EOF>)})]
        )
    )
    (command.ShFunction
      name: func_generated_by_libtool_p
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$GREP')}
                {(DQ <'^# Generated by .*'> ($ Id.VSub_DollarName '$PACKAGE'))}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: func_lalib_p
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-f>} {(DQ ($ Id.VSub_Number '$1'))})
                (command.Pipeline
                  children: [
                    (command.Simple
                      words: [{($ Id.VSub_DollarName '$SED')} {<-e>} {<4q>} {(DQ ($ Id.VSub_Number '$1'))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                    (C {<func_generated_by_libtool_p>})
                  ]
                  negated: F
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_lalib_unsafe_p
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:lalib_p)
                  op: assign_op.Equal
                  rhs: {<no>}
                  spids: [11528]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp Id.Op_DAmp]
                              children: [
                                (C {<test>} {<-f>} {(DQ ($ Id.VSub_Number '$1'))})
                                (C {<test>} {<-r>} {(DQ ($ Id.VSub_Number '$1'))})
                                (command.Simple
                                  words: [{<exec>}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_LessAnd '5<&'>
                                      loc: (redir_loc.Fd fd:5)
                                      arg: {<0>}
                                    )
                                    (redir
                                      op: <Id.Redir_Less '<'>
                                      loc: (redir_loc.Fd fd:0)
                                      arg: {(DQ ($ Id.VSub_Number '$1'))}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ForEach
                      iter_name: lalib_p_l
                      iter_words: [{<1>} {<2>} {<3>} {<4>}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<read>} {<lalib_p_line>})
                            (command.Case
                              to_match: {($ Id.VSub_DollarName '$lalib_p_line')}
                              arms: [
                                (case_arm
                                  pat_list: [
                                    {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\#'>) 
                                      (word_part.EscapedLiteral
                                        token: <Id.Lit_EscapedChar '\\ '>
                                      ) <Generated> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) <by> 
                                      (word_part.EscapedLiteral
                                        token: <Id.Lit_EscapedChar '\\ '>
                                      ) <Id.Lit_Star '*'> ($ Id.VSub_DollarName '$PACKAGE') <Id.Lit_Star '*'>
                                    }
                                  ]
                                  action: [
                                    (command.Sentence
                                      child: 
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:lalib_p)
                                              op: assign_op.Equal
                                              rhs: {<yes>}
                                              spids: [11610]
                                            )
                                          ]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [11598 11608 11615 -1]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.Simple
                      words: [{<exec>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_LessAnd '0<&'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {<5>}
                        )
                        (redir
                          op: <Id.Redir_LessAnd '5<&'>
                          loc: (redir_loc.Fd fd:5)
                          arg: {<->}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [11532 11565]
                )
              ]
            )
            (C {<test>} {<yes>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$lalib_p'))})
          ]
        )
    )
    (command.ShFunction
      name: func_ltwrapper_script_p
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-f>} {(DQ ($ Id.VSub_Number '$1'))})
                (command.Pipeline
                  children: [
                    (command.Simple
                      words: [{($ Id.VSub_DollarName '$lt_truncate_bin')}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(DQ ($ Id.VSub_Number '$1'))}
                        )
                        (redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                    (C {<func_generated_by_libtool_p>})
                  ]
                  negated: F
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_ltwrapper_executable_p
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_ltwrapper_exec_suffix)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [11718]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <.exe>}]
                  spids: [11728 11730 11732 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_ltwrapper_exec_suffix)
                          op: assign_op.Equal
                          rhs: {<.exe>}
                          spids: [11738]
                        )
                      ]
                    )
                  ]
                  spids: [11735 11736 11741 -1]
                )
              ]
            )
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$GREP')}
                {(DQ ($ Id.VSub_DollarName '$magic_exe'))}
                {(DQ ($ Id.VSub_Number '$1') ($ Id.VSub_DollarName '$func_ltwrapper_exec_suffix'))}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: func_ltwrapper_scriptname
      body: 
        (BraceGroup
          children: [
            (C {<func_dirname_and_basename>} {(DQ ($ Id.VSub_Number '$1'))} {(DQ )} {(DQ <.>)})
            (C {<func_stripname>} {(SQ )} {(SQ <.exe>)} 
              {(DQ ($ Id.VSub_DollarName '$func_basename_result'))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_ltwrapper_scriptname_result)
                  op: assign_op.Equal
                  rhs: 
                    {($ Id.VSub_DollarName '$func_dirname_result') <'/'> 
                      ($ Id.VSub_DollarName '$objdir') <'/'> (${ Id.VSub_Name func_stripname_result) <_ltshwrapper>
                    }
                  spids: [11815]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_ltwrapper_p
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<func_ltwrapper_script_p>} {(DQ ($ Id.VSub_Number '$1'))})
                (C {<func_ltwrapper_executable_p>} {(DQ ($ Id.VSub_Number '$1'))})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_execute_cmds
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:save_ifs)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$IFS')}
                      spids: [11890]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {(SQ <'~'>)}
                  spids: [11894]
                )
              ]
            )
            (command.ForEach
              iter_name: cmd
              iter_words: [{($ Id.VSub_Number '$1')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:IFS)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$sp') ($ Id.VSub_DollarName '$nl')}
                          spids: [11912]
                        )
                      ]
                    )
                    (C {<eval>} 
                      {<Id.Lit_VarLike 'cmd='> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                        ) ($ Id.VSub_DollarName '$cmd') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:IFS)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$save_ifs')}
                          spids: [11925]
                        )
                      ]
                    )
                    (C {<func_show_eval>} {(DQ ($ Id.VSub_DollarName '$cmd'))} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Number 2>
                            suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<':'>})
                          )
                        )
                      }
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$save_ifs')}
                  spids: [11947]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_source
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.Case
              to_match: {($ Id.VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>}
                    {<Id.Lit_Star '*'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) 
                      <Id.Lit_Star '*'>
                    }
                  ]
                  action: [(C {<.>} {(DQ ($ Id.VSub_Number '$1'))})]
                  spids: [11991 12000 12008 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<.>} {(DQ <'./'> ($ Id.VSub_Number '$1'))})]
                  spids: [12011 12012 12021 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_resolve_sysroot
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_resolve_sysroot_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [12047]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$func_resolve_sysroot_result')}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Equals '='> <Id.Lit_Star '*'>}]
                  action: [
                    (C {<func_stripname>} {(SQ <'='>)} {(SQ )} 
                      {(DQ ($ Id.VSub_DollarName '$func_resolve_sysroot_result'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_resolve_sysroot_result)
                          op: assign_op.Equal
                          rhs: 
                            {($ Id.VSub_DollarName '$lt_sysroot') 
                              ($ Id.VSub_DollarName '$func_stripname_result')
                            }
                          spids: [12077]
                        )
                      ]
                    )
                  ]
                  spids: [12058 12060 12082 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_replace_sysroot
      body: 
        (BraceGroup
          children: [
            (command.Case
              to_match: 
                {($ Id.VSub_DollarName '$lt_sysroot') <Id.Lit_Colon ':'> ($ Id.VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> 
                      (DQ ($ Id.VSub_DollarName '$lt_sysroot')) <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (C {<func_stripname>} {(DQ ($ Id.VSub_DollarName '$lt_sysroot'))} {(SQ )} 
                      {(DQ ($ Id.VSub_Number '$1'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_replace_sysroot_result)
                          op: assign_op.Equal
                          rhs: {(SQ <'='>) ($ Id.VSub_DollarName '$func_stripname_result')}
                          spids: [12140]
                        )
                      ]
                    )
                  ]
                  spids: [12116 12123 12147 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_replace_sysroot_result)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [12158]
                        )
                      ]
                    )
                  ]
                  spids: [12150 12151 12162 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_infer_tag
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$available_tags'))})
                                (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$tagname'))})
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CC_quoted)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [12224]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: arg
                      iter_words: [{($ Id.VSub_DollarName '$CC')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<func_append_quoted>} {<CC_quoted>} {(DQ ($ Id.VSub_DollarName '$arg'))})
                          ]
                        )
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CC_expanded)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<func_echo_all>} {($ Id.VSub_DollarName '$CC')})
                              )
                            }
                          spids: [12251]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CC_quoted_expanded)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<func_echo_all>} {($ Id.VSub_DollarName '$CC_quoted')})
                              )
                            }
                          spids: [12261]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {($ Id.VSub_At '$@')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(DQ <' '> ($ Id.VSub_DollarName '$CC') <' '>) <Id.Lit_Star '*'>}
                            {(DQ ($ Id.VSub_DollarName '$CC') <' '>) <Id.Lit_Star '*'>}
                            {(DQ <' '> ($ Id.VSub_DollarName '$CC_expanded') <' '>) <Id.Lit_Star '*'>}
                            {(DQ ($ Id.VSub_DollarName '$CC_expanded') <' '>) <Id.Lit_Star '*'>}
                            {(DQ <' '> ($ Id.VSub_DollarName '$CC_quoted')) <Id.Lit_Star '*'>}
                            {(DQ ($ Id.VSub_DollarName '$CC_quoted') <' '>) <Id.Lit_Star '*'>}
                            {(DQ <' '> ($ Id.VSub_DollarName '$CC_quoted_expanded') <' '>) 
                              <Id.Lit_Star '*'>
                            }
                            {(DQ ($ Id.VSub_DollarName '$CC_quoted_expanded') <' '>) 
                              <Id.Lit_Star '*'>
                            }
                          ]
                          spids: [12286 12352 12354 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.ForEach
                              iter_name: z
                              iter_words: [{($ Id.VSub_DollarName '$available_tags')}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.Simple
                                                      words: [
                                                        {($ Id.VSub_DollarName '$GREP')}
                                                        {
                                                          (DQ <'^# ### BEGIN LIBTOOL TAG CONFIG: '> 
                                                            ($ Id.VSub_DollarName '$z') <Id.Lit_Dollar '$'>
                                                          )
                                                        }
                                                      ]
                                                      redirects: [
                                                        (redir
                                                          op: <Id.Redir_Less '<'>
                                                          loc: (redir_loc.Fd fd:0)
                                                          arg: 
                                                            {(DQ ($ Id.VSub_DollarName '$progpath'))}
                                                        )
                                                        (redir
                                                          op: <Id.Redir_Great '>'>
                                                          loc: (redir_loc.Fd fd:1)
                                                          arg: {<'/dev/null'>}
                                                        )
                                                      ]
                                                      do_fork: T
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (C {<eval>} 
                                              {
                                                (DQ 
                                                  (command_sub
                                                    left_token: <Id.Left_Backtick '`'>
                                                    child: 
                                                      (command.Simple
                                                        words: [
                                                          {($ Id.VSub_DollarName '$SED')}
                                                          {<-n>}
                                                          {<-e>}
                                                          {
                                                            (SQ 
                                                              <'/^# ### BEGIN LIBTOOL TAG CONFIG: '>
                                                            ) ($ Id.VSub_DollarName '$z') (SQ <'$/,/^# ### END LIBTOOL TAG CONFIG: '>) ($ Id.VSub_DollarName '$z') 
                                                            (SQ <'$/p'>)
                                                          }
                                                        ]
                                                        redirects: [
                                                          (redir
                                                            op: <Id.Redir_Less '<'>
                                                            loc: (redir_loc.Fd fd:0)
                                                            arg: {($ Id.VSub_DollarName '$progpath')}
                                                          )
                                                        ]
                                                        do_fork: T
                                                      )
                                                  )
                                                )
                                              }
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:CC_quoted)
                                                  op: assign_op.Equal
                                                  rhs: (word.Empty)
                                                  spids: [12440]
                                                )
                                              ]
                                            )
                                            (command.ForEach
                                              iter_name: arg
                                              iter_words: [{($ Id.VSub_DollarName '$CC')}]
                                              do_arg_iter: F
                                              body: 
                                                (command.DoGroup
                                                  children: [
                                                    (C {<func_append_quoted>} {<CC_quoted>} 
                                                      {(DQ ($ Id.VSub_DollarName '$arg'))}
                                                    )
                                                  ]
                                                )
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:CC_expanded)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_Backtick '`'>
                                                        child: 
                                                          (C {<func_echo_all>} 
                                                            {($ Id.VSub_DollarName '$CC')}
                                                          )
                                                      )
                                                    }
                                                  spids: [12471]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:CC_quoted_expanded)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_Backtick '`'>
                                                        child: 
                                                          (C {<func_echo_all>} 
                                                            {($ Id.VSub_DollarName '$CC_quoted')}
                                                          )
                                                      )
                                                    }
                                                  spids: [12481]
                                                )
                                              ]
                                            )
                                            (command.Case
                                              to_match: {(DQ ($ Id.VSub_At '$@') <' '>)}
                                              arms: [
                                                (case_arm
                                                  pat_list: [
                                                    {(DQ <' '> ($ Id.VSub_DollarName '$CC') <' '>) 
                                                      <Id.Lit_Star '*'>
                                                    }
                                                    {(DQ ($ Id.VSub_DollarName '$CC') <' '>) 
                                                      <Id.Lit_Star '*'>
                                                    }
                                                    {
                                                      (DQ <' '> ($ Id.VSub_DollarName '$CC_expanded') 
                                                        <' '>
                                                      ) <Id.Lit_Star '*'>
                                                    }
                                                    {(DQ ($ Id.VSub_DollarName '$CC_expanded') <' '>) 
                                                      <Id.Lit_Star '*'>
                                                    }
                                                    {(DQ <' '> ($ Id.VSub_DollarName '$CC_quoted')) 
                                                      <Id.Lit_Star '*'>
                                                    }
                                                    {(DQ ($ Id.VSub_DollarName '$CC_quoted') <' '>) 
                                                      <Id.Lit_Star '*'>
                                                    }
                                                    {
                                                      (DQ <' '> 
                                                        ($ Id.VSub_DollarName '$CC_quoted_expanded') <' '>
                                                      ) <Id.Lit_Star '*'>
                                                    }
                                                    {
                                                      (DQ 
                                                        ($ Id.VSub_DollarName '$CC_quoted_expanded') <' '>
                                                      ) <Id.Lit_Star '*'>
                                                    }
                                                  ]
                                                  action: [
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (sh_lhs_expr.Name name:tagname)
                                                          op: assign_op.Equal
                                                          rhs: {($ Id.VSub_DollarName '$z')}
                                                          spids: [12582]
                                                        )
                                                      ]
                                                    )
                                                    (command.ControlFlow
                                                      token: <Id.ControlFlow_Break break>
                                                    )
                                                  ]
                                                  spids: [12501 12567 12589 -1]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [12381 12402]
                                        )
                                      ]
                                    )
                                  ]
                                )
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$tagname'))})
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<func_echo>} {(DQ <'unable to infer tagged configuration'>)})
                                    (C {<func_fatal_error>} {(DQ <'specify a tag with \'--tag\''>)})
                                  ]
                                  spids: [12613 12624]
                                )
                              ]
                            )
                          ]
                          spids: [12365 12366 12650 -1]
                        )
                      ]
                    )
                  ]
                  spids: [12200 12221]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_write_libtool_object
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:write_libobj)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [12680]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName '$build_libtool_libs'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:write_lobj)
                          op: assign_op.Equal
                          rhs: 
                            {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''>) 
                              ($ Id.VSub_Number '$2') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''>)
                            }
                          spids: [12700]
                        )
                      ]
                    )
                  ]
                  spids: [12684 12697]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:write_lobj)
                      op: assign_op.Equal
                      rhs: {<none>}
                      spids: [12709]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName '$build_old_libs'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:write_oldobj)
                          op: assign_op.Equal
                          rhs: 
                            {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''>) 
                              ($ Id.VSub_Number '$3') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''>)
                            }
                          spids: [12733]
                        )
                      ]
                    )
                  ]
                  spids: [12717 12730]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:write_oldobj)
                      op: assign_op.Equal
                      rhs: {<none>}
                      spids: [12742]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                (BraceGroup
                  children: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(${ Id.VSub_Name write_libobj) <T>}
                        )
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 12793
                              stdin_parts: [
                                <'# '>
                                ($ Id.VSub_DollarName '$write_libobj')
                                <' - a libtool object file\n'>
                                <'# Generated by '>
                                ($ Id.VSub_DollarName '$PROGRAM')
                                <' (GNU '>
                                ($ Id.VSub_DollarName '$PACKAGE')
                                <') '>
                                ($ Id.VSub_DollarName '$VERSION')
                                <'\n'>
                                <'#\n'>
                                <'# Please DO NOT delete this file!\n'>
                                <'# It is necessary for linking the library.\n'>
                                <'\n'>
                                <'# Name of the PIC object.\n'>
                                <'pic_object='>
                                ($ Id.VSub_DollarName '$write_lobj')
                                <'\n'>
                                <'\n'>
                                <'# Name of the non-PIC object\n'>
                                <'non_pic_object='>
                                ($ Id.VSub_DollarName '$write_oldobj')
                                <'\n'>
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      do_fork: T
                    )
                    (C {($ Id.VSub_DollarName '$MV')} {(DQ (${ Id.VSub_Name write_libobj) <T>)} 
                      {(DQ ($ Id.VSub_DollarName '$write_libobj'))}
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_core_file_wine_to_w32
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_convert_core_file_wine_to_w32_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [12864]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_convert_core_file_wine_to_w32_tmp)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    words: [{<winepath>} {<-w>} {(DQ ($ Id.VSub_Number '$1'))}]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_Great '2>'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    do_fork: T
                                  )
                              )
                            }
                          spids: [12902]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<test>} {(DQ ($ Id.VSub_QMark '$?'))} {<-eq>} {<0>})
                                        (C {<test>} {<-n>} 
                                          {
                                            (DQ 
                                              ($ Id.VSub_DollarName 
'$func_convert_core_file_wine_to_w32_tmp'
                                              )
                                            )
                                          }
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      name: func_convert_core_file_wine_to_w32_result
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {($ Id.VSub_DollarName '$ECHO')} 
                                                {
                                                  (DQ 
                                                    ($ Id.VSub_DollarName 
'$func_convert_core_file_wine_to_w32_tmp'
                                                    )
                                                  )
                                                }
                                              )
                                              (C {($ Id.VSub_DollarName '$SED')} {<-e>} 
                                                {
                                                  (DQ 
                                                    ($ Id.VSub_DollarName '$sed_naive_backslashify')
                                                  )
                                                }
                                              )
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [12945]
                                )
                              ]
                            )
                          ]
                          spids: [12919 12942]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:func_convert_core_file_wine_to_w32_result)
                              op: assign_op.Equal
                              rhs: (word.Empty)
                              spids: [12972]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [12868 12879]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_core_path_wine_to_w32
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_convert_core_path_wine_to_w32_result)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [13033]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:oldIFS)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$IFS')}
                          spids: [13050]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:IFS)
                          op: assign_op.Equal
                          rhs: {<Id.Lit_Colon ':'>}
                          spids: [13054]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: func_convert_core_path_wine_to_w32_f
                      iter_words: [{($ Id.VSub_Number '$1')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:IFS)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$oldIFS')}
                                  spids: [13070]
                                )
                              ]
                            )
                            (C {<func_convert_core_file_wine_to_w32>} 
                              {(DQ ($ Id.VSub_DollarName '$func_convert_core_path_wine_to_w32_f'))}
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {<-n>} 
                                              {
                                                (DQ 
                                                  ($ Id.VSub_DollarName 
'$func_convert_core_file_wine_to_w32_result'
                                                  )
                                                )
                                              }
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<test>} {<-z>} 
                                                      {
                                                        (DQ 
                                                          ($ Id.VSub_DollarName 
'$func_convert_core_path_wine_to_w32_result'
                                                          )
                                                        )
                                                      }
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      name: 
func_convert_core_path_wine_to_w32_result
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      ($ Id.VSub_DollarName 
'$func_convert_core_file_wine_to_w32_result'
                                                      )
                                                    }
                                                  spids: [13109]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [13095 13106]
                                        )
                                      ]
                                      else_action: [
                                        (C {<func_append>} 
                                          {<func_convert_core_path_wine_to_w32_result>} {(DQ <';'> ($ Id.VSub_DollarName '$func_convert_core_file_wine_to_w32_result'))}
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [13081 13092]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:IFS)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$oldIFS')}
                          spids: [13135]
                        )
                      ]
                    )
                  ]
                  spids: [13036 13047]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_cygpath
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$LT_CYGPATH'))})
                                (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$LT_CYGPATH'))})
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_cygpath_result)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    words: [
                                      {($ Id.VSub_DollarName '$LT_CYGPATH')}
                                      {(DQ ($ Id.VSub_At '$@'))}
                                    ]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_Great '2>'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    do_fork: T
                                  )
                              )
                            }
                          spids: [13229]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<test>} {(DQ ($ Id.VSub_QMark '$?'))} {<-ne>} {<0>})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:func_cygpath_result)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [13264]
                                )
                              ]
                            )
                          ]
                          spids: [13244 13257]
                        )
                      ]
                    )
                  ]
                  spids: [13205 13226]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:func_cygpath_result)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [13273]
                    )
                  ]
                )
                (C {<func_error>} 
                  {
                    (DQ <'LT_CYGPATH is empty or specifies non-existent file: \''> 
                      ($ Id.VSub_DollarName '$LT_CYGPATH') <'\''>
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_core_msys_to_w32
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_convert_core_msys_to_w32_result)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Subshell
                                child: (C {<cmd>} {<'//c'>} {<echo>} {(DQ ($ Id.VSub_Number '$1'))})
                                redirects: [
                                  (redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                              )
                              (C {($ Id.VSub_DollarName '$SED')} {<-e>} {(SQ <'s/[ ]*$//'>)} {<-e>} 
                                {(DQ ($ Id.VSub_DollarName '$sed_naive_backslashify'))}
                              )
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [13319]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_file_check
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {<-z>} {(DQ ($ Id.VSub_Number '$2'))})
                                (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))})
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<func_error>} {(DQ <'Could not determine host file name corresponding to'>)})
                    (C {<func_error>} {(DQ <'  \''> ($ Id.VSub_Number '$1') <'\''>)})
                    (C {<func_error>} {(DQ <'Continuing, but uninstalled executables may not work.'>)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_file_result)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [13441]
                        )
                      ]
                    )
                  ]
                  spids: [13390 13411]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_path_check
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {<-z>} {(DQ ($ Id.VSub_Number '$4'))})
                                (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number '$3'))})
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<func_error>} {(DQ <'Could not determine the host path corresponding to'>)})
                    (C {<func_error>} {(DQ <'  \''> ($ Id.VSub_Number '$3') <'\''>)})
                    (C {<func_error>} {(DQ <'Continuing, but uninstalled executables may not work.'>)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {(DQ <x> ($ Id.VSub_Number '$1'))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <x> ($ Id.VSub_Number '$2'))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:lt_replace_pathsep_chars)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'s|'> ($ Id.VSub_Number '$1') <'|'> ($ Id.VSub_Number '$2') 
                                        <'|g'>
                                      )
                                    }
                                  spids: [13554]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:func_to_host_path_result)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<echo>} {(DQ ($ Id.VSub_Number '$3'))})
                                              (C {($ Id.VSub_DollarName '$SED')} {<-e>} 
                                                {
                                                  (DQ 
                                                    ($ Id.VSub_DollarName '$lt_replace_pathsep_chars')
                                                  )
                                                }
                                              )
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [13564]
                                )
                              ]
                            )
                          ]
                          spids: [13533 13551]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:func_to_host_path_result)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number '$3')}
                              spids: [13591]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [13478 13499]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_path_front_back_pathsep
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.Case
              to_match: {($ Id.VSub_Number '$4')}
              arms: [
                (case_arm
                  pat_list: [{($ Id.VSub_Number '$1')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_path_result)
                          op: assign_op.Equal
                          rhs: 
                            {($ Id.VSub_Number '$3') 
                              ($ Id.VSub_DollarName '$func_to_host_path_result')
                            }
                          spids: [13639]
                        )
                      ]
                    )
                  ]
                  spids: [13635 13637 13644 -1]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_Number '$4')}
              arms: [
                (case_arm
                  pat_list: [{($ Id.VSub_Number '$2')}]
                  action: [
                    (C {<func_append>} {<func_to_host_path_result>} {(DQ ($ Id.VSub_Number '$3'))})
                  ]
                  spids: [13657 13659 13670 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_to_host_file
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {($ Id.VSub_DollarName '$to_host_file_cmd')} {(DQ ($ Id.VSub_Number '$1'))})
          ]
        )
    )
    (command.ShFunction
      name: func_to_tool_file
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.Case
              to_match: {<Id.Lit_Comma ','> ($ Id.VSub_Number '$2') <Id.Lit_Comma ','>}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <Id.Lit_Comma ','> 
                      (DQ ($ Id.VSub_DollarName '$to_tool_file_cmd')) <Id.Lit_Comma ','> <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_tool_file_result)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [13782]
                        )
                      ]
                    )
                  ]
                  spids: [13772 13779 13786 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {($ Id.VSub_DollarName '$to_tool_file_cmd')} {(DQ ($ Id.VSub_Number '$1'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_tool_file_result)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_to_host_file_result')}
                          spids: [13800]
                        )
                      ]
                    )
                  ]
                  spids: [13789 13790 13804 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_file_noop
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_to_host_file_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [13830]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_file_msys_to_w32
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_to_host_file_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [13864]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<func_convert_core_msys_to_w32>} {(DQ ($ Id.VSub_Number '$1'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_file_result)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_convert_core_msys_to_w32_result')}
                          spids: [13889]
                        )
                      ]
                    )
                  ]
                  spids: [13868 13879]
                )
              ]
            )
            (C {<func_convert_file_check>} {(DQ ($ Id.VSub_Number '$1'))} 
              {(DQ ($ Id.VSub_DollarName '$func_to_host_file_result'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_file_cygwin_to_w32
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_to_host_file_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [13934]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_file_result)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<cygpath>} {<-m>} {(DQ ($ Id.VSub_Number '$1'))})
                              )
                            }
                          spids: [13960]
                        )
                      ]
                    )
                  ]
                  spids: [13938 13949]
                )
              ]
            )
            (C {<func_convert_file_check>} {(DQ ($ Id.VSub_Number '$1'))} 
              {(DQ ($ Id.VSub_DollarName '$func_to_host_file_result'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_file_nix_to_w32
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_to_host_file_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [14015]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<func_convert_core_file_wine_to_w32>} {(DQ ($ Id.VSub_Number '$1'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_file_result)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_convert_core_file_wine_to_w32_result')}
                          spids: [14040]
                        )
                      ]
                    )
                  ]
                  spids: [14019 14030]
                )
              ]
            )
            (C {<func_convert_file_check>} {(DQ ($ Id.VSub_Number '$1'))} 
              {(DQ ($ Id.VSub_DollarName '$func_to_host_file_result'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_file_msys_to_cygwin
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_to_host_file_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [14085]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<func_convert_core_msys_to_w32>} {(DQ ($ Id.VSub_Number '$1'))})
                    (C {<func_cygpath>} {<-u>} 
                      {(DQ ($ Id.VSub_DollarName '$func_convert_core_msys_to_w32_result'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_file_result)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_cygpath_result')}
                          spids: [14119]
                        )
                      ]
                    )
                  ]
                  spids: [14089 14100]
                )
              ]
            )
            (C {<func_convert_file_check>} {(DQ ($ Id.VSub_Number '$1'))} 
              {(DQ ($ Id.VSub_DollarName '$func_to_host_file_result'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_file_nix_to_cygwin
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_to_host_file_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [14167]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<func_convert_core_file_wine_to_w32>} {(DQ ($ Id.VSub_Number '$1'))})
                    (C {<func_cygpath>} {<-u>} 
                      {(DQ ($ Id.VSub_DollarName '$func_convert_core_file_wine_to_w32_result'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_file_result)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_cygpath_result')}
                          spids: [14205]
                        )
                      ]
                    )
                  ]
                  spids: [14171 14182]
                )
              ]
            )
            (C {<func_convert_file_check>} {(DQ ($ Id.VSub_Number '$1'))} 
              {(DQ ($ Id.VSub_DollarName '$func_to_host_file_result'))}
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:to_host_path_cmd)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [14297]
        )
      ]
    )
    (command.ShFunction
      name: func_init_to_host_path_cmd
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$to_host_path_cmd'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<func_stripname>} {(SQ <func_convert_file_>)} {(SQ )} 
                      {(DQ ($ Id.VSub_DollarName '$to_host_file_cmd'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:to_host_path_cmd)
                          op: assign_op.Equal
                          rhs: {<func_convert_path_> ($ Id.VSub_DollarName '$func_stripname_result')}
                          spids: [14339]
                        )
                      ]
                    )
                  ]
                  spids: [14311 14322]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_to_host_path
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (C {<func_init_to_host_path_cmd>})
            (C {($ Id.VSub_DollarName '$to_host_path_cmd')} {(DQ ($ Id.VSub_Number '$1'))})
          ]
        )
    )
    (command.ShFunction
      name: func_convert_path_noop
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_to_host_path_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [14401]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_path_msys_to_w32
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_to_host_path_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [14435]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<func_stripname>} {<Id.Lit_Colon ':'>} {<Id.Lit_Colon ':'>} 
                      {(DQ ($ Id.VSub_Number '$1'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_path_tmp1)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_stripname_result')}
                          spids: [14476]
                        )
                      ]
                    )
                    (C {<func_convert_core_msys_to_w32>} 
                      {(DQ ($ Id.VSub_DollarName '$func_to_host_path_tmp1'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_path_result)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_convert_core_msys_to_w32_result')}
                          spids: [14487]
                        )
                      ]
                    )
                    (C {<func_convert_path_check>} {<Id.Lit_Colon ':'>} {(DQ <';'>)} 
                      {(DQ ($ Id.VSub_DollarName '$func_to_host_path_tmp1'))} {(DQ ($ Id.VSub_DollarName '$func_to_host_path_result'))}
                    )
                    (C {<func_convert_path_front_back_pathsep>} {(DQ <':*'>)} {(DQ <'*:'>)} {(DQ <';'>)} 
                      {(DQ ($ Id.VSub_Number '$1'))}
                    )
                  ]
                  spids: [14439 14450]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_path_cygwin_to_w32
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_to_host_path_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [14559]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<func_stripname>} {<Id.Lit_Colon ':'>} {<Id.Lit_Colon ':'>} 
                      {(DQ ($ Id.VSub_Number '$1'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_path_tmp1)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_stripname_result')}
                          spids: [14592]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_path_result)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (C {<cygpath>} {<-m>} {<-p>} 
                                    {(DQ ($ Id.VSub_DollarName '$func_to_host_path_tmp1'))}
                                  )
                              )
                            }
                          spids: [14596]
                        )
                      ]
                    )
                    (C {<func_convert_path_check>} {<Id.Lit_Colon ':'>} {(DQ <';'>)} 
                      {(DQ ($ Id.VSub_DollarName '$func_to_host_path_tmp1'))} {(DQ ($ Id.VSub_DollarName '$func_to_host_path_result'))}
                    )
                    (C {<func_convert_path_front_back_pathsep>} {(DQ <':*'>)} {(DQ <'*:'>)} {(DQ <';'>)} 
                      {(DQ ($ Id.VSub_Number '$1'))}
                    )
                  ]
                  spids: [14563 14574]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_path_nix_to_w32
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_to_host_path_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [14680]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<func_stripname>} {<Id.Lit_Colon ':'>} {<Id.Lit_Colon ':'>} 
                      {(DQ ($ Id.VSub_Number '$1'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_path_tmp1)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_stripname_result')}
                          spids: [14713]
                        )
                      ]
                    )
                    (C {<func_convert_core_path_wine_to_w32>} 
                      {(DQ ($ Id.VSub_DollarName '$func_to_host_path_tmp1'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_path_result)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_convert_core_path_wine_to_w32_result')}
                          spids: [14724]
                        )
                      ]
                    )
                    (C {<func_convert_path_check>} {<Id.Lit_Colon ':'>} {(DQ <';'>)} 
                      {(DQ ($ Id.VSub_DollarName '$func_to_host_path_tmp1'))} {(DQ ($ Id.VSub_DollarName '$func_to_host_path_result'))}
                    )
                    (C {<func_convert_path_front_back_pathsep>} {(DQ <':*'>)} {(DQ <'*:'>)} {(DQ <';'>)} 
                      {(DQ ($ Id.VSub_Number '$1'))}
                    )
                  ]
                  spids: [14684 14695]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_path_msys_to_cygwin
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_to_host_path_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [14796]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<func_stripname>} {<Id.Lit_Colon ':'>} {<Id.Lit_Colon ':'>} 
                      {(DQ ($ Id.VSub_Number '$1'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_path_tmp1)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_stripname_result')}
                          spids: [14829]
                        )
                      ]
                    )
                    (C {<func_convert_core_msys_to_w32>} 
                      {(DQ ($ Id.VSub_DollarName '$func_to_host_path_tmp1'))}
                    )
                    (C {<func_cygpath>} {<-u>} {<-p>} 
                      {(DQ ($ Id.VSub_DollarName '$func_convert_core_msys_to_w32_result'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_path_result)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_cygpath_result')}
                          spids: [14851]
                        )
                      ]
                    )
                    (C {<func_convert_path_check>} {<Id.Lit_Colon ':'>} {<Id.Lit_Colon ':'>} 
                      {(DQ ($ Id.VSub_DollarName '$func_to_host_path_tmp1'))} {(DQ ($ Id.VSub_DollarName '$func_to_host_path_result'))}
                    )
                    (C {<func_convert_path_front_back_pathsep>} {(DQ <':*'>)} {(DQ <'*:'>)} 
                      {<Id.Lit_Colon ':'>} {(DQ ($ Id.VSub_Number '$1'))}
                    )
                  ]
                  spids: [14800 14811]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_convert_path_nix_to_cygwin
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_to_host_path_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [14922]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<func_stripname>} {<Id.Lit_Colon ':'>} {<Id.Lit_Colon ':'>} 
                      {(DQ ($ Id.VSub_Number '$1'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_path_tmp1)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_stripname_result')}
                          spids: [14963]
                        )
                      ]
                    )
                    (C {<func_convert_core_path_wine_to_w32>} 
                      {(DQ ($ Id.VSub_DollarName '$func_to_host_path_tmp1'))}
                    )
                    (C {<func_cygpath>} {<-u>} {<-p>} 
                      {(DQ ($ Id.VSub_DollarName '$func_convert_core_path_wine_to_w32_result'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_to_host_path_result)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_cygpath_result')}
                          spids: [14985]
                        )
                      ]
                    )
                    (C {<func_convert_path_check>} {<Id.Lit_Colon ':'>} {<Id.Lit_Colon ':'>} 
                      {(DQ ($ Id.VSub_DollarName '$func_to_host_path_tmp1'))} {(DQ ($ Id.VSub_DollarName '$func_to_host_path_result'))}
                    )
                    (C {<func_convert_path_front_back_pathsep>} {(DQ <':*'>)} {(DQ <'*:'>)} 
                      {<Id.Lit_Colon ':'>} {(DQ ($ Id.VSub_Number '$1'))}
                    )
                  ]
                  spids: [14926 14937]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_dll_def_p
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_dll_def_p_tmp)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {($ Id.VSub_DollarName '$SED')} {<-n>} {<-e>} {(SQ <'s/^[\t ]*//'>)} {<-e>} 
                            {(SQ <'/^\\(;.*\\)*$/d'>)} {<-e>} {(SQ <'s/^\\(EXPORTS\\|LIBRARY\\)\\([\t ].*\\)*$/DEF/p'>)} {<-e>} {<q>} 
                            {(DQ ($ Id.VSub_Number '$1'))}
                          )
                      )
                    }
                  spids: [15053]
                )
              ]
            )
            (C {<test>} {<DEF>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$func_dll_def_p_tmp'))})
          ]
        )
    )
    (command.ShFunction
      name: func_mode_compile
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:base_compile)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [15161]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:srcfile)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$nonopt')}
                  spids: [15164]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:suppress_opt)
                  op: assign_op.Equal
                  rhs: {<yes>}
                  spids: [15171]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:suppress_output)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [15175]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:arg_mode)
                  op: assign_op.Equal
                  rhs: {<normal>}
                  spids: [15178]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:libobj)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [15182]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:later)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [15185]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pie_flag)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [15188]
                )
              ]
            )
            (command.ForEach
              iter_name: arg
              do_arg_iter: T
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$arg_mode')}
                      arms: [
                        (case_arm
                          pat_list: [{<arg>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:lastarg)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$arg')}
                                  spids: [15216]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:arg_mode)
                                  op: assign_op.Equal
                                  rhs: {<normal>}
                                  spids: [15220]
                                )
                              ]
                            )
                          ]
                          spids: [15207 15209 15224 -1]
                        )
                        (case_arm
                          pat_list: [{<target>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:libobj)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$arg')}
                                  spids: [15233]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:arg_mode)
                                  op: assign_op.Equal
                                  rhs: {<normal>}
                                  spids: [15237]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [15228 15230 15244 -1]
                        )
                        (case_arm
                          pat_list: [{<normal>}]
                          action: [
                            (command.Case
                              to_match: {($ Id.VSub_DollarName '$arg')}
                              arms: [
                                (case_arm
                                  pat_list: [{<-o>}]
                                  action: [
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$libobj'))})
                                        (C {<func_fatal_error>} 
                                          {(DQ <'you cannot specify \'-o\' more than once'>)}
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:arg_mode)
                                          op: assign_op.Equal
                                          rhs: {<target>}
                                          spids: [15287]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [15264 15265 15294 -1]
                                )
                                (case_arm
                                  pat_list: [{<-pie>} {<-fpie>} {<-fPIE>}]
                                  action: [
                                    (C {<func_append>} {<pie_flag>} 
                                      {(DQ <' '> ($ Id.VSub_DollarName '$arg'))}
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [15298 15307 15323 -1]
                                )
                                (case_arm
                                  pat_list: [{<-shared>} {<-static>} {<-prefer-pic>} {<-prefer-non-pic>}]
                                  action: [
                                    (C {<func_append>} {<later>} 
                                      {(DQ <' '> ($ Id.VSub_DollarName '$arg'))}
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [15327 15340 15356 -1]
                                )
                                (case_arm
                                  pat_list: [{<-no-suppress>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:suppress_opt)
                                          op: assign_op.Equal
                                          rhs: {<no>}
                                          spids: [15364]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [15360 15361 15371 -1]
                                )
                                (case_arm
                                  pat_list: [{<-Xcompiler>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:arg_mode)
                                          op: assign_op.Equal
                                          rhs: {<arg>}
                                          spids: [15379]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [15375 15376 15392 -1]
                                )
                                (case_arm
                                  pat_list: [{<-Wc> <Id.Lit_Comma ','> <Id.Lit_Star '*'>}]
                                  action: [
                                    (C {<func_stripname>} {(SQ <'-Wc,'>)} {(SQ )} 
                                      {(DQ ($ Id.VSub_DollarName '$arg'))}
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:args)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$func_stripname_result')}
                                          spids: [15419]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:lastarg)
                                          op: assign_op.Equal
                                          rhs: (word.Empty)
                                          spids: [15423]
                                        )
                                      ]
                                    )
                                    (command.Sentence
                                      child: 
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:save_ifs)
                                              op: assign_op.Equal
                                              rhs: {($ Id.VSub_DollarName '$IFS')}
                                              spids: [15426]
                                            )
                                          ]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:IFS)
                                          op: assign_op.Equal
                                          rhs: {<Id.Lit_Comma ','>}
                                          spids: [15430]
                                        )
                                      ]
                                    )
                                    (command.ForEach
                                      iter_name: arg
                                      iter_words: [{($ Id.VSub_DollarName '$args')}]
                                      do_arg_iter: F
                                      body: 
                                        (command.DoGroup
                                          children: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:IFS)
                                                  op: assign_op.Equal
                                                  rhs: {($ Id.VSub_DollarName '$save_ifs')}
                                                  spids: [15446]
                                                )
                                              ]
                                            )
                                            (C {<func_append_quoted>} {<lastarg>} 
                                              {(DQ ($ Id.VSub_DollarName '$arg'))}
                                            )
                                          ]
                                        )
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:IFS)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$save_ifs')}
                                          spids: [15462]
                                        )
                                      ]
                                    )
                                    (C {<func_stripname>} {(SQ <' '>)} {(SQ )} 
                                      {(DQ ($ Id.VSub_DollarName '$lastarg'))}
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:lastarg)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$func_stripname_result')}
                                          spids: [15480]
                                        )
                                      ]
                                    )
                                    (C {<func_append>} {<base_compile>} 
                                      {(DQ <' '> ($ Id.VSub_DollarName '$lastarg'))}
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [15399 15402 15502 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:lastarg)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$srcfile')}
                                          spids: [15522]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:srcfile)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$arg')}
                                          spids: [15526]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [15506 15507 15530 -1]
                                )
                              ]
                            )
                          ]
                          spids: [15248 15250 15539 -1]
                        )
                      ]
                    )
                    (C {<func_append_quoted>} {<base_compile>} {(DQ ($ Id.VSub_DollarName '$lastarg'))})
                  ]
                )
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$arg_mode')}
              arms: [
                (case_arm
                  pat_list: [{<arg>}]
                  action: [
                    (C {<func_fatal_error>} {(DQ <'you must specify an argument for -Xcompile'>)})
                  ]
                  spids: [15576 15577 15587 -1]
                )
                (case_arm
                  pat_list: [{<target>}]
                  action: [(C {<func_fatal_error>} {(DQ <'you must specify a target with \'-o\''>)})]
                  spids: [15590 15591 15601 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$libobj'))})
                        (BraceGroup
                          children: [
                            (C {<func_basename>} {(DQ ($ Id.VSub_DollarName '$srcfile'))})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:libobj)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$func_basename_result')}
                                  spids: [15632]
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [15604 15605 15639 -1]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$libobj')}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <.> <Id.Lit_LBracket '['> <cCFSifmso> <Id.Lit_RBracket ']'>}
                    {<Id.Lit_Star '*'> <.ada>}
                    {<Id.Lit_Star '*'> <.adb>}
                    {<Id.Lit_Star '*'> <.ads>}
                    {<Id.Lit_Star '*'> <.asm>}
                    {<Id.Lit_Star '*'> <.c> <Id.Lit_Other '+'> <Id.Lit_Other '+'>}
                    {<Id.Lit_Star '*'> <.cc>}
                    {<Id.Lit_Star '*'> <.ii>}
                    {<Id.Lit_Star '*'> <.class>}
                    {<Id.Lit_Star '*'> <.cpp>}
                    {<Id.Lit_Star '*'> <.cxx>}
                    {<Id.Lit_Star '*'> <.> <Id.Lit_LBracket '['> <fF> <Id.Lit_RBracket ']'> 
                      <Id.Lit_LBracket '['> <09> <Id.Lit_RBracket ']'> <Id.Lit_QMark '?'>
                    }
                    {<Id.Lit_Star '*'> <.for>}
                    {<Id.Lit_Star '*'> <.java>}
                    {<Id.Lit_Star '*'> <.go>}
                    {<Id.Lit_Star '*'> <.obj>}
                    {<Id.Lit_Star '*'> <.sx>}
                    {<Id.Lit_Star '*'> <.cu>}
                    {<Id.Lit_Star '*'> <.cup>}
                  ]
                  action: [
                    (C {<func_xform>} {(DQ ($ Id.VSub_DollarName '$libobj'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:libobj)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_xform_result')}
                          spids: [15781]
                        )
                      ]
                    )
                  ]
                  spids: [15661 15771 15785 -1]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$libobj')}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <.lo>}]
                  action: [
                    (command.Sentence
                      child: (C {<func_lo2o>} {(DQ ($ Id.VSub_DollarName '$libobj'))})
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:obj)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$func_lo2o_result')}
                          spids: [15810]
                        )
                      ]
                    )
                  ]
                  spids: [15799 15801 15813 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<func_fatal_error>} 
                      {
                        (DQ <'cannot determine name of library object from \''> 
                          ($ Id.VSub_DollarName '$libobj') <'\''>
                        )
                      }
                    )
                  ]
                  spids: [15816 15817 15829 -1]
                )
              ]
            )
            (C {<func_infer_tag>} {($ Id.VSub_DollarName '$base_compile')})
            (command.ForEach
              iter_name: arg
              iter_words: [{($ Id.VSub_DollarName '$later')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$arg')}
                      arms: [
                        (case_arm
                          pat_list: [{<-shared>}]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                                  {(DQ ($ Id.VSub_DollarName '$build_libtool_libs'))}
                                )
                                (C {<func_fatal_configuration>} {(DQ <'cannot build a shared library'>)})
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:build_old_libs)
                                  op: assign_op.Equal
                                  rhs: {<no>}
                                  spids: [15886]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [15861 15862 15893 -1]
                        )
                        (case_arm
                          pat_list: [{<-static>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:build_libtool_libs)
                                  op: assign_op.Equal
                                  rhs: {<no>}
                                  spids: [15901]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:build_old_libs)
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                  spids: [15905]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [15897 15898 15912 -1]
                        )
                        (case_arm
                          pat_list: [{<-prefer-pic>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:pic_mode)
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                  spids: [15920]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [15916 15917 15927 -1]
                        )
                        (case_arm
                          pat_list: [{<-prefer-non-pic>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:pic_mode)
                                  op: assign_op.Equal
                                  rhs: {<no>}
                                  spids: [15935]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [15931 15932 15942 -1]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<func_quote_for_eval>} {(DQ ($ Id.VSub_DollarName '$libobj'))})
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {<test>} {(DQ <X> ($ Id.VSub_DollarName '$libobj'))} 
                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <X> ($ Id.VSub_DollarName '$func_quote_for_eval_result'))}
                )
                (command.Pipeline
                  children: [
                    (C {($ Id.VSub_DollarName '$ECHO')} {(DQ <X> ($ Id.VSub_DollarName '$libobj'))})
                    (C {($ Id.VSub_DollarName '$GREP')} 
                      {(SQ <'[]~#^*{};<>?"'>) (DQ <'\''>) (SQ <'\t &()|`$[]'>)}
                    )
                  ]
                  negated: F
                )
                (C {<func_warning>} 
                  {
                    (DQ <'libobj name \''> ($ Id.VSub_DollarName '$libobj') 
                      <'\' may not contain shell special characters.'>
                    )
                  }
                )
              ]
            )
            (C {<func_dirname_and_basename>} {(DQ ($ Id.VSub_DollarName '$obj'))} {(DQ <'/'>)} {(DQ )})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:objname)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_basename_result')}
                  spids: [16026]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:xdir)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_dirname_result')}
                  spids: [16030]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:lobj)
                  op: assign_op.Equal
                  rhs: 
                    {($ Id.VSub_DollarName '$xdir') ($ Id.VSub_DollarName '$objdir') <'/'> 
                      ($ Id.VSub_DollarName '$objname')
                    }
                  spids: [16034]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$base_compile'))})
                (C {<func_fatal_help>} {(DQ <'you must specify a compilation command'>)})
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName '$build_old_libs'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:removelist)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$obj') <' '> ($ Id.VSub_DollarName '$lobj') 
                                <' '> ($ Id.VSub_DollarName '$libobj') <' '> (${ Id.VSub_Name libobj) <T>
                              )
                            }
                          spids: [16082]
                        )
                      ]
                    )
                  ]
                  spids: [16066 16079]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:removelist)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ ($ Id.VSub_DollarName '$lobj') <' '> ($ Id.VSub_DollarName '$libobj') 
                            <' '> (${ Id.VSub_Name libobj) <T>
                          )
                        }
                      spids: [16100]
                    )
                  ]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$host_os')}
              arms: [
                (case_arm
                  pat_list: [
                    {<cygwin> <Id.Lit_Star '*'>}
                    {<mingw> <Id.Lit_Star '*'>}
                    {<pw32> <Id.Lit_Star '*'>}
                    {<os2> <Id.Lit_Star '*'>}
                    {<cegcc> <Id.Lit_Star '*'>}
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:pic_mode)
                          op: assign_op.Equal
                          rhs: {<default>}
                          spids: [16153]
                        )
                      ]
                    )
                  ]
                  spids: [16128 16150 16157 -1]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {<no>} {<Id.Lit_Equals '='>} 
                                  {(DQ ($ Id.VSub_DollarName '$pic_mode'))}
                                )
                                (C {<test>} {<pass_all>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} 
                                  {(DQ ($ Id.VSub_DollarName '$deplibs_check_method'))}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:pic_mode)
                          op: assign_op.Equal
                          rhs: {<default>}
                          spids: [16196]
                        )
                      ]
                    )
                  ]
                  spids: [16163 16189]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<no>} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName '$compiler_c_o'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:output_obj)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {($ Id.VSub_DollarName '$ECHO')} 
                                        {(DQ ($ Id.VSub_DollarName '$srcfile'))}
                                      )
                                      (C {($ Id.VSub_DollarName '$SED')} 
                                        {(SQ <'s%^.*/%%; s%\\.[^.]*$%%'>)}
                                      )
                                    ]
                                    negated: F
                                  )
                              ) <.> ($ Id.VSub_DollarName '$objext')
                            }
                          spids: [16228]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:lockfile)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$output_obj') <.lock>}
                          spids: [16252]
                        )
                      ]
                    )
                  ]
                  spids: [16212 16225]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:output_obj)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [16260]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:need_locks)
                      op: assign_op.Equal
                      rhs: {<no>}
                      spids: [16263]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:lockfile)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [16267]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName '$need_locks'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.WhileUntil
                      keyword: <Id.KW_Until until>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                    (command.Simple
                                      words: [
                                        {<ln>}
                                        {(DQ ($ Id.VSub_DollarName '$progpath'))}
                                        {(DQ ($ Id.VSub_DollarName '$lockfile'))}
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_Great '2>'>
                                          loc: (redir_loc.Fd fd:2)
                                          arg: {<'/dev/null'>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<func_echo>} 
                              {
                                (DQ <'Waiting for '> ($ Id.VSub_DollarName '$lockfile') 
                                  <' to be removed'>
                                )
                              }
                            )
                            (C {<sleep>} {<2>})
                          ]
                        )
                    )
                  ]
                  spids: [16282 16295]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<warn>} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName '$need_locks'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$lockfile'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {($ Id.VSub_DollarName '$ECHO')} 
                              {
                                (DQ <'*** ERROR, '> ($ Id.VSub_DollarName '$lockfile') 
                                  <' exists and contains:\n'> 
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        words: [{<cat>} {($ Id.VSub_DollarName '$lockfile')}]
                                        redirects: [
                                          (redir
                                            op: <Id.Redir_Great '2>'>
                                            loc: (redir_loc.Fd fd:2)
                                            arg: {<'/dev/null'>}
                                          )
                                        ]
                                        do_fork: T
                                      )
                                  ) <'\n'> <'\n'> <'This indicates that another process is trying to use the same\n'> 
                                  <
'temporary object file, and libtool could not work around it because\n'
                                  > <'your compiler does not support \'-c\' and \'-o\' together.  If you\n'> 
                                  <
'repeat this compilation, it may succeed, by chance, but you had better\n'
                                  > <'avoid parallel builds (make -j) in this platform, or get a better\n'> <compiler.>
                                )
                              }
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                (C {($ Id.VSub_DollarName '$RM')} 
                                  {($ Id.VSub_DollarName '$removelist')}
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {($ Id.VSub_DollarName '$EXIT_FAILURE')}
                            )
                          ]
                          spids: [16354 16365]
                        )
                      ]
                    )
                    (C {<func_append>} {<removelist>} {(DQ <' '> ($ Id.VSub_DollarName '$output_obj'))})
                    (command.Simple
                      words: [{($ Id.VSub_DollarName '$ECHO')} {(DQ ($ Id.VSub_DollarName '$srcfile'))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName '$lockfile'))}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [16338 16351]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                (C {($ Id.VSub_DollarName '$RM')} {($ Id.VSub_DollarName '$removelist')})
              ]
            )
            (C {<func_append>} {<removelist>} {(DQ <' '> ($ Id.VSub_DollarName '$lockfile'))})
            (C {<trap>} {(SQ <'$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'>)} {<1>} {<2>} {<15>})
            (C {<func_to_tool_file>} {(DQ ($ Id.VSub_DollarName '$srcfile'))} 
              {<func_convert_file_msys_to_w32>}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:srcfile)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_to_tool_file_result')}
                  spids: [16483]
                )
              ]
            )
            (C {<func_quote_for_eval>} {(DQ ($ Id.VSub_DollarName '$srcfile'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:qsrcfile)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_quote_for_eval_result')}
                  spids: [16494]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName '$build_libtool_libs'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fbsd_hideous_sh_bug)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$base_compile')}
                          spids: [16523]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {<no>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} 
                                      {(DQ ($ Id.VSub_DollarName '$pic_mode'))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:command)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$base_compile') <' '> 
                                        ($ Id.VSub_DollarName '$qsrcfile') <' '> ($ Id.VSub_DollarName '$pic_flag')
                                      )
                                    }
                                  spids: [16545]
                                )
                              ]
                            )
                          ]
                          spids: [16528 16542]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:command)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$base_compile') <' '> 
                                    ($ Id.VSub_DollarName '$qsrcfile')
                                  )
                                }
                              spids: [16562]
                            )
                          ]
                        )
                      ]
                    )
                    (C {<func_mkdir_p>} 
                      {(DQ ($ Id.VSub_DollarName '$xdir') ($ Id.VSub_DollarName '$objdir'))}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$output_obj'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<func_append>} {<command>} {(DQ <' -o '> ($ Id.VSub_DollarName '$lobj'))})
                          ]
                          spids: [16583 16594]
                        )
                      ]
                    )
                    (C {<func_show_eval_locale>} {(DQ ($ Id.VSub_DollarName '$command'))} 
                      {(SQ <'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'>)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<test>} {<warn>} {<Id.Lit_Equals '='>} 
                                          {(DQ ($ Id.VSub_DollarName '$need_locks'))}
                                        )
                                        (C {<test>} 
                                          {
                                            (DQ <X> 
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Simple
                                                    words: [
                                                      {<cat>}
                                                      {($ Id.VSub_DollarName '$lockfile')}
                                                    ]
                                                    redirects: [
                                                      (redir
                                                        op: <Id.Redir_Great '2>'>
                                                        loc: (redir_loc.Fd fd:2)
                                                        arg: {<'/dev/null'>}
                                                      )
                                                    ]
                                                    do_fork: T
                                                  )
                                              )
                                            )
                                          } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <X> ($ Id.VSub_DollarName '$srcfile'))}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {($ Id.VSub_DollarName '$ECHO')} 
                              {
                                (DQ <'*** ERROR, '> ($ Id.VSub_DollarName '$lockfile') <' contains:\n'> 
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        words: [{<cat>} {($ Id.VSub_DollarName '$lockfile')}]
                                        redirects: [
                                          (redir
                                            op: <Id.Redir_Great '2>'>
                                            loc: (redir_loc.Fd fd:2)
                                            arg: {<'/dev/null'>}
                                          )
                                        ]
                                        do_fork: T
                                      )
                                  ) <'\n'> <'\n'> <'but it should contain:\n'> ($ Id.VSub_DollarName '$srcfile') <'\n'> <'\n'> 
                                  <
'This indicates that another process is trying to use the same\n'
                                  > <'temporary object file, and libtool could not work around it because\n'> 
                                  <
'your compiler does not support \'-c\' and \'-o\' together.  If you\n'
                                  > <'repeat this compilation, it may succeed, by chance, but you had better\n'> 
                                  <
'avoid parallel builds (make -j) in this platform, or get a better\n'
                                  > <compiler.>
                                )
                              }
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                (C {($ Id.VSub_DollarName '$RM')} 
                                  {($ Id.VSub_DollarName '$removelist')}
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {($ Id.VSub_DollarName '$EXIT_FAILURE')}
                            )
                          ]
                          spids: [16629 16669]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$output_obj'))})
                                        (C {<test>} {(DQ <X> ($ Id.VSub_DollarName '$output_obj'))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <X> ($ Id.VSub_DollarName '$lobj'))}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<func_show_eval>} {(SQ <'$MV "$output_obj" "$lobj"'>)} 
                              {(SQ <'error=$?; $opt_dry_run || $RM $removelist; exit $error'>)}
                            )
                          ]
                          spids: [16727 16755]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                                      {(DQ ($ Id.VSub_DollarName '$suppress_opt'))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:suppress_output)
                                  op: assign_op.Equal
                                  rhs: {(SQ <' >/dev/null 2>&1'>)}
                                  spids: [16795]
                                )
                              ]
                            )
                          ]
                          spids: [16779 16792]
                        )
                      ]
                    )
                  ]
                  spids: [16503 16516]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName '$build_old_libs'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {<yes>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} 
                                      {(DQ ($ Id.VSub_DollarName '$pic_mode'))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:command)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$base_compile') <' '> 
                                        ($ Id.VSub_DollarName '$qsrcfile') ($ Id.VSub_DollarName '$pie_flag')
                                      )
                                    }
                                  spids: [16849]
                                )
                              ]
                            )
                          ]
                          spids: [16828 16842]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:command)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$base_compile') <' '> 
                                    ($ Id.VSub_DollarName '$qsrcfile') <' '> ($ Id.VSub_DollarName '$pic_flag')
                                  )
                                }
                              spids: [16861]
                            )
                          ]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {<yes>} {<Id.Lit_Equals '='>} 
                                      {(DQ ($ Id.VSub_DollarName '$compiler_c_o'))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<func_append>} {<command>} {(DQ <' -o '> ($ Id.VSub_DollarName '$obj'))})
                          ]
                          spids: [16874 16887]
                        )
                      ]
                    )
                    (C {<func_append>} {<command>} {(DQ ($ Id.VSub_DollarName '$suppress_output'))})
                    (C {<func_show_eval_locale>} {(DQ ($ Id.VSub_DollarName '$command'))} 
                      {(SQ <'$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'>)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<test>} {<warn>} {<Id.Lit_Equals '='>} 
                                          {(DQ ($ Id.VSub_DollarName '$need_locks'))}
                                        )
                                        (C {<test>} 
                                          {
                                            (DQ <X> 
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Simple
                                                    words: [
                                                      {<cat>}
                                                      {($ Id.VSub_DollarName '$lockfile')}
                                                    ]
                                                    redirects: [
                                                      (redir
                                                        op: <Id.Redir_Great '2>'>
                                                        loc: (redir_loc.Fd fd:2)
                                                        arg: {<'/dev/null'>}
                                                      )
                                                    ]
                                                    do_fork: T
                                                  )
                                              )
                                            )
                                          } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <X> ($ Id.VSub_DollarName '$srcfile'))}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {($ Id.VSub_DollarName '$ECHO')} 
                              {
                                (DQ <'*** ERROR, '> ($ Id.VSub_DollarName '$lockfile') <' contains:\n'> 
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        words: [{<cat>} {($ Id.VSub_DollarName '$lockfile')}]
                                        redirects: [
                                          (redir
                                            op: <Id.Redir_Great '2>'>
                                            loc: (redir_loc.Fd fd:2)
                                            arg: {<'/dev/null'>}
                                          )
                                        ]
                                        do_fork: T
                                      )
                                  ) <'\n'> <'\n'> <'but it should contain:\n'> ($ Id.VSub_DollarName '$srcfile') <'\n'> <'\n'> 
                                  <
'This indicates that another process is trying to use the same\n'
                                  > <'temporary object file, and libtool could not work around it because\n'> 
                                  <
'your compiler does not support \'-c\' and \'-o\' together.  If you\n'
                                  > <'repeat this compilation, it may succeed, by chance, but you had better\n'> 
                                  <
'avoid parallel builds (make -j) in this platform, or get a better\n'
                                  > <compiler.>
                                )
                              }
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                (C {($ Id.VSub_DollarName '$RM')} 
                                  {($ Id.VSub_DollarName '$removelist')}
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {($ Id.VSub_DollarName '$EXIT_FAILURE')}
                            )
                          ]
                          spids: [16931 16971]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$output_obj'))})
                                        (C {<test>} {(DQ <X> ($ Id.VSub_DollarName '$output_obj'))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <X> ($ Id.VSub_DollarName '$obj'))}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<func_show_eval>} {(SQ <'$MV "$output_obj" "$obj"'>)} 
                              {(SQ <'error=$?; $opt_dry_run || $RM $removelist; exit $error'>)}
                            )
                          ]
                          spids: [17029 17057]
                        )
                      ]
                    )
                  ]
                  spids: [16812 16825]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                (BraceGroup
                  children: [
                    (C {<func_write_libtool_object>} {(DQ ($ Id.VSub_DollarName '$libobj'))} 
                      {(DQ ($ Id.VSub_DollarName '$objdir') <'/'> ($ Id.VSub_DollarName '$objname'))} {(DQ ($ Id.VSub_DollarName '$objname'))}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {<no>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} 
                                      {(DQ ($ Id.VSub_DollarName '$need_locks'))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:removelist)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$lockfile')}
                                  spids: [17126]
                                )
                              ]
                            )
                            (C {($ Id.VSub_DollarName '$RM')} {(DQ ($ Id.VSub_DollarName '$lockfile'))})
                          ]
                          spids: [17109 17123]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_DollarName '$EXIT_SUCCESS')}
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {($ Id.VSub_DollarName '$opt_help')})
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<compile>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$opt_mode'))})
                (C {<func_mode_compile>} 
                  {
                    (braced_var_sub
                      token: <Id.VSub_Number 1>
                      suffix_op: 
                        (suffix_op.Unary
                          tok: <Id.VTest_Plus '+'>
                          arg_word: {(DQ ($ Id.VSub_At '$@'))}
                        )
                    )
                  }
                )
              ]
            )
          ]
        )
      ]
    )
    (command.ShFunction
      name: func_mode_help
      body: 
        (BraceGroup
          children: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$opt_mode')}
              arms: [
                (case_arm
                  pat_list: [{(DQ )}]
                  action: [(C {<func_help>})]
                  spids: [17202 17204 17218 -1]
                )
                (case_arm
                  pat_list: [{<clean>}]
                  action: [
                    (C {($ Id.VSub_DollarName '$ECHO')} 
                      {
                        (DQ <'Usage: '> ($ Id.VSub_DollarName '$progname') 
                          <' [OPTION]... --mode=clean RM [RM-OPTION]... FILE...\n'> <'\n'> <'Remove files from the build directory.\n'> <'\n'> 
                          <
'RM is the name of the program to use to delete files associated with each FILE\n'
                          > <'(typically \'/bin/rm\').  RM-OPTIONS are options (such as \'-f\') to be passed\n'> <'to RM.\n'> 
                          <'\n'> <'If FILE is a libtool library, object or program, all the files associated\n'> 
                          <'with it are deleted. Otherwise, only FILE itself is deleted using RM.'>
                        )
                      }
                    )
                  ]
                  spids: [17222 17223 17245 -1]
                )
                (case_arm
                  pat_list: [{<compile>}]
                  action: [
                    (C {($ Id.VSub_DollarName '$ECHO')} 
                      {
                        (DQ <'Usage: '> ($ Id.VSub_DollarName '$progname') 
                          <' [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE\n'> <'\n'> <'Compile a source file into a libtool library object.\n'> <'\n'> 
                          <'This mode accepts the following additional options:\n'> <'\n'> <'  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE\n'> 
                          <
'  -no-suppress      do not suppress compiler output for multiple passes\n'
                          > <'  -prefer-pic       try to build PIC objects only\n'> 
                          <'  -prefer-non-pic   try to build non-PIC objects only\n'> <'  -shared           do not build a \'.o\' file suitable for static linking\n'> 
                          <
'  -static           only build a \'.o\' file suitable for static linking\n'
                          > <'  -Wc,FLAG          pass FLAG directly to the compiler\n'> <'\n'> 
                          <
'COMPILE-COMMAND is a command to be used in creating a \'standard\' object file\n'
                          > <'from the given SOURCEFILE.\n'> <'\n'> 
                          <
'The output file name is determined by removing the directory component from\n'
                          > <'SOURCEFILE, then substituting the C source code suffix \'.c\' with the\n'> 
                          <'library object suffix, \'.lo\'.'>
                        )
                      }
                    )
                  ]
                  spids: [17249 17250 17282 -1]
                )
                (case_arm
                  pat_list: [{<execute>}]
                  action: [
                    (C {($ Id.VSub_DollarName '$ECHO')} 
                      {
                        (DQ <'Usage: '> ($ Id.VSub_DollarName '$progname') 
                          <' [OPTION]... --mode=execute COMMAND [ARGS]...\n'> <'\n'> <'Automatically set library path, then run a program.\n'> <'\n'> 
                          <'This mode accepts the following additional options:\n'> <'\n'> <'  -dlopen FILE      add the directory containing FILE to the library path\n'> <'\n'> 
                          <
'This mode sets the library path environment variable according to \'-dlopen\'\n'
                          > <'flags.\n'> <'\n'> <'If any of the ARGS are libtool executable wrappers, then they are translated\n'> 
                          <
'into their corresponding uninstalled binary, and any of their required library\n'
                          > <'directories are added to the library path.\n'> <'\n'> 
                          <'Then, COMMAND is executed, with ARGS as arguments.'>
                        )
                      }
                    )
                  ]
                  spids: [17286 17287 17315 -1]
                )
                (case_arm
                  pat_list: [{<finish>}]
                  action: [
                    (C {($ Id.VSub_DollarName '$ECHO')} 
                      {
                        (DQ <'Usage: '> ($ Id.VSub_DollarName '$progname') 
                          <' [OPTION]... --mode=finish [LIBDIR]...\n'> <'\n'> <'Complete the installation of libtool libraries.\n'> <'\n'> 
                          <'Each LIBDIR is a directory that contains libtool libraries.\n'> <'\n'> <'The commands that this mode executes may require superuser privileges.  Use\n'> 
                          <
'the \'--dry-run\' option if you just want to see what would be executed.'
                          >
                        )
                      }
                    )
                  ]
                  spids: [17319 17320 17340 -1]
                )
                (case_arm
                  pat_list: [{<install>}]
                  action: [
                    (C {($ Id.VSub_DollarName '$ECHO')} 
                      {
                        (DQ <'Usage: '> ($ Id.VSub_DollarName '$progname') 
                          <' [OPTION]... --mode=install INSTALL-COMMAND...\n'> <'\n'> <'Install executables or libraries.\n'> <'\n'> 
                          <
'INSTALL-COMMAND is the installation command.  The first component should be\n'
                          > <'either the \'install\' or \'cp\' program.\n'> <'\n'> 
                          <'The following components of INSTALL-COMMAND are treated specially:\n'> <'\n'> <'  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation\n'> <'\n'> 
                          <
'The rest of the components are interpreted as arguments to that command (only\n'
                          > <'BSD-compatible install options are recognized).'>
                        )
                      }
                    )
                  ]
                  spids: [17344 17345 17370 -1]
                )
                (case_arm
                  pat_list: [{<link>}]
                  action: [
                    (C {($ Id.VSub_DollarName '$ECHO')} 
                      {
                        (DQ <'Usage: '> ($ Id.VSub_DollarName '$progname') 
                          <' [OPTION]... --mode=link LINK-COMMAND...\n'> <'\n'> <'Link object files or libraries together to form another library, or to\n'> 
                          <'create an executable program.\n'> <'\n'> <'LINK-COMMAND is a command using the C compiler that you would use to create\n'> 
                          <'a program from several object files.\n'> <'\n'> <'The following components of LINK-COMMAND are treated specially:\n'> <'\n'> 
                          <'  -all-static       do not do any dynamic linking at all\n'> <'  -avoid-version    do not add a version suffix if possible\n'> 
                          <
'  -bindir BINDIR    specify path to binaries directory (for systems where\n'
                          > <'                    libraries must be found in the PATH setting at runtime)\n'> 
                          <
'  -dlopen FILE      \'-dlpreopen\' FILE if it cannot be dlopened at runtime\n'
                          > <'  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols\n'> 
                          <
'  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)\n'
                          > <'  -export-symbols SYMFILE\n'> 
                          <'                    try to export only the symbols listed in SYMFILE\n'> <'  -export-symbols-regex REGEX\n'> 
                          <'                    try to export only the symbols matching REGEX\n'> <'  -LLIBDIR          search LIBDIR for required installed libraries\n'> 
                          <
'  -lNAME            OUTPUT-FILE requires the installed library libNAME\n'
                          > <'  -module           build a library that can dlopened\n'> 
                          <'  -no-fast-install  disable the fast-install mode\n'> <'  -no-install       link a not-installable executable\n'> 
                          <
'  -no-undefined     declare that a library does not refer to external symbols\n'
                          > <'  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects\n'> 
                          <
'  -objectlist FILE  use a list of object files found in FILE to specify objects\n'
                          > <'  -os2dllname NAME  force a short DLL name on OS/2 (no effect on other OSes)\n'> 
                          <'  -precious-files-regex REGEX\n'> <'                    don\'t remove output files matching REGEX\n'> 
                          <'  -release RELEASE  specify package release information\n'> <'  -rpath LIBDIR     the created library will eventually be installed in LIBDIR\n'> 
                          <
'  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries\n'
                          > <'  -shared           only do dynamic linking of libtool libraries\n'> 
                          <
'  -shrext SUFFIX    override the standard shared library file extension\n'
                          > <'  -static           do not do any dynamic linking of uninstalled libtool libraries\n'> 
                          <'  -static-libtool-libs\n'> <'                    do not do any dynamic linking of libtool libraries\n'> 
                          <'  -version-info CURRENT[:REVISION[:AGE]]\n'> <'                    specify library version info [each variable defaults to 0]\n'> 
                          <
'  -weak LIBNAME     declare that the target provides the LIBNAME interface\n'
                          > <'  -Wc,FLAG\n'> <'  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler\n'> 
                          <'  -Wl,FLAG\n'> <'  -Xlinker FLAG     pass linker-specific FLAG directly to the linker\n'> 
                          <
'  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)\n'
                          > <'\n'> <'All other options (arguments beginning with \'-\') are ignored.\n'> <'\n'> 
                          <
'Every other argument is treated as a filename.  Files ending in \'.la\' are\n'
                          > <'treated as uninstalled libtool libraries, other files are standard or library\n'> 
                          <'object files.\n'> <'\n'> <'If the OUTPUT-FILE ends in \'.la\', then a libtool library is created,\n'> 
                          <
'only library objects (\'.lo\' files) may be specified, and \'-rpath\' is\n'
                          > <'required, except when creating a convenience library.\n'> <'\n'> 
                          <
'If OUTPUT-FILE ends in \'.a\' or \'.lib\', then a standard library is created\n'
                          > <'using \'ar\' and \'ranlib\', or on Windows using \'lib\'.\n'> <'\n'> 
                          <'If OUTPUT-FILE ends in \'.lo\' or \'.'> ($ Id.VSub_DollarName '$objext') <'\', then a reloadable object file\n'> 
                          <'is created, otherwise an executable program is created.'>
                        )
                      }
                    )
                  ]
                  spids: [17374 17375 17453 -1]
                )
                (case_arm
                  pat_list: [{<uninstall>}]
                  action: [
                    (C {($ Id.VSub_DollarName '$ECHO')} 
                      {
                        (DQ <'Usage: '> ($ Id.VSub_DollarName '$progname') 
                          <' [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...\n'> <'\n'> <'Remove libraries from an installation directory.\n'> <'\n'> 
                          <
'RM is the name of the program to use to delete files associated with each FILE\n'
                          > <'(typically \'/bin/rm\').  RM-OPTIONS are options (such as \'-f\') to be passed\n'> <'to RM.\n'> 
                          <'\n'> <'If FILE is a libtool library, all the files associated with it are deleted.\n'> 
                          <'Otherwise, only FILE itself is deleted using RM.'>
                        )
                      }
                    )
                  ]
                  spids: [17457 17458 17480 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<func_fatal_help>} 
                      {(DQ <'invalid operation mode \''> ($ Id.VSub_DollarName '$opt_mode') <'\''>)}
                    )
                  ]
                  spids: [17484 17485 17497 -1]
                )
              ]
            )
            (C {<echo>})
            (C {($ Id.VSub_DollarName '$ECHO')} 
              {
                (DQ <'Try \''> ($ Id.VSub_DollarName '$progname') 
                  <' --help\' for more information about other modes.'>
                )
              }
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {($ Id.VSub_DollarName '$opt_help')})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<Id.Lit_Colon ':'>} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName '$opt_help'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<func_mode_help>})]
                  spids: [17529 17542]
                )
              ]
              else_action: [
                (command.Pipeline
                  children: [
                    (BraceGroup
                      children: [
                        (C {<func_help>} {<noexit>})
                        (command.ForEach
                          iter_name: opt_mode
                          iter_words: [
                            {<compile>}
                            {<link>}
                            {<execute>}
                            {<install>}
                            {<finish>}
                            {<uninstall>}
                            {<clean>}
                          ]
                          do_arg_iter: F
                          body: (command.DoGroup children:[(C {<func_mode_help>})])
                        )
                      ]
                    )
                    (C {($ Id.VSub_DollarName '$SED')} {<-n>} {(SQ <'1p; 2,$s/^Usage:/  or: /p'>)})
                  ]
                  negated: F
                )
                (command.Pipeline
                  children: [
                    (BraceGroup
                      children: [
                        (C {<func_help>} {<noexit>})
                        (command.ForEach
                          iter_name: opt_mode
                          iter_words: [
                            {<compile>}
                            {<link>}
                            {<execute>}
                            {<install>}
                            {<finish>}
                            {<uninstall>}
                            {<clean>}
                          ]
                          do_arg_iter: F
                          body: (command.DoGroup children:[(C {<echo>}) (C {<func_mode_help>})])
                        )
                      ]
                    )
                    (C {($ Id.VSub_DollarName '$SED')} 
                      {
                        (SQ <'1d\n'> <'      /^When reporting/,/^Report/{\n'> <'\tH\n'> <'\td\n'> 
                          <'      }\n'> <'      $x\n'> <'      /information about other modes/d\n'> <'      /more detailed .*MODE/d\n'> 
                          <'      s/^Usage:.*--mode=\\([^ ]*\\) .*/Description of \\1 mode:/'>
                        )
                      }
                    )
                  ]
                  negated: F
                )
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_QMark '$?')}
            )
          ]
          spids: [17521 17526]
        )
      ]
    )
    (command.ShFunction
      name: func_mode_execute
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cmd)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$nonopt')}
                  spids: [17693]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$cmd'))})
                (C {<func_fatal_help>} {(DQ <'you must specify a COMMAND'>)})
              ]
            )
            (command.ForEach
              iter_name: file
              iter_words: [{($ Id.VSub_DollarName '$opt_dlopen')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$file'))})
                        (C {<func_fatal_help>} 
                          {(DQ <'\''> ($ Id.VSub_DollarName '$file') <'\' is not a file'>)}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:dir)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [17755]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$file')}
                      arms: [
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'> <.la>}]
                          action: [
                            (C {<func_resolve_sysroot>} {(DQ ($ Id.VSub_DollarName '$file'))})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:file)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$func_resolve_sysroot_result')}
                                  spids: [17777]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<func_lalib_unsafe_p>} {(DQ ($ Id.VSub_DollarName '$file'))})
                                (C {<func_fatal_help>} 
                                  {
                                    (DQ <'\''> ($ Id.VSub_DollarName '$lib') 
                                      <'\' is not a valid libtool archive'>
                                    )
                                  }
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:dlname)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [17810]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:library_names)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [17813]
                                )
                              ]
                            )
                            (C {<func_source>} {(DQ ($ Id.VSub_DollarName '$file'))})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$dlname'))})
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$library_names'))})
                                        (C {<func_warning>} 
                                          {
                                            (DQ <'\''> ($ Id.VSub_DollarName '$file') 
                                              <'\' was not linked with \'-export-dynamic\''>
                                            )
                                          }
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [17828 17839]
                                )
                              ]
                            )
                            (C {<func_dirname>} {(DQ ($ Id.VSub_DollarName '$file'))} {(DQ )} {(DQ <.>)})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:dir)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$func_dirname_result')}
                                  spids: [17888]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {<-f>} 
                                              {
                                                (DQ ($ Id.VSub_DollarName '$dir') <'/'> 
                                                  ($ Id.VSub_DollarName '$objdir') <'/'> ($ Id.VSub_DollarName '$dlname')
                                                )
                                              }
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<func_append>} {<dir>} 
                                      {(DQ <'/'> ($ Id.VSub_DollarName '$objdir'))}
                                    )
                                  ]
                                  spids: [17893 17908]
                                )
                              ]
                              else_action: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<test>} {<Id.KW_Bang '!'>} {<-f>} 
                                                  {
                                                    (DQ ($ Id.VSub_DollarName '$dir') <'/'> 
                                                      ($ Id.VSub_DollarName '$dlname')
                                                    )
                                                  }
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (C {<func_fatal_error>} 
                                          {
                                            (DQ <'cannot find \''> ($ Id.VSub_DollarName '$dlname') 
                                              <'\' in \''> ($ Id.VSub_DollarName '$dir') <'\' or \''> ($ Id.VSub_DollarName '$dir') <'/'> 
                                              ($ Id.VSub_DollarName '$objdir') <'\''>
                                            )
                                          }
                                        )
                                      ]
                                      spids: [17924 17939]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [17765 17767 17963 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'> <.lo>}]
                          action: [
                            (C {<func_dirname>} {(DQ ($ Id.VSub_DollarName '$file'))} {(DQ )} {(DQ <.>)})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:dir)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$func_dirname_result')}
                                  spids: [17990]
                                )
                              ]
                            )
                          ]
                          spids: [17967 17969 17994 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (C {<func_warning>} 
                              {(DQ <'\'-dlopen\' is ignored for non-libtool libraries and objects'>)}
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [17998 17999 18012 -1]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:absdir)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.AndOr
                                    ops: [Id.Op_DAmp]
                                    children: [
                                      (C {<cd>} {(DQ ($ Id.VSub_DollarName '$dir'))})
                                      (C {<pwd>})
                                    ]
                                  )
                              )
                            }
                          spids: [18023]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$absdir'))})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:dir)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName '$absdir')}
                              spids: [18049]
                            )
                          ]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<eval>} 
                                      {
                                        (DQ <'test -z '> 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\"'>
                                          ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) ($ Id.VSub_DollarName '$shlibpath_var') 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\"'>
                                          )
                                        )
                                      }
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<eval>} 
                              {
                                (DQ ($ Id.VSub_DollarName '$shlibpath_var') <'='> 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\"'>
                                  ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <dir> 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\"'>
                                  )
                                )
                              }
                            )
                          ]
                          spids: [18058 18071]
                        )
                      ]
                      else_action: [
                        (C {<eval>} 
                          {
                            (DQ ($ Id.VSub_DollarName '$shlibpath_var') <'='> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\"'>
                              ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'dir:'> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\$'>
                              ) ($ Id.VSub_DollarName '$shlibpath_var') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                            )
                          }
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:libtool_execute_magic)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$magic')}
                  spids: [18118]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:args)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [18127]
                )
              ]
            )
            (command.ForEach
              iter_name: file
              do_arg_iter: T
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$file')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<-> <Id.Lit_Star '*'>}
                            {<Id.Lit_Star '*'> <.la>}
                            {<Id.Lit_Star '*'> <.lo>}
                          ]
                          spids: [18145 18158 18160 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<func_ltwrapper_script_p>} 
                                              {(DQ ($ Id.VSub_DollarName '$file'))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<func_source>} {(DQ ($ Id.VSub_DollarName '$file'))})
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:file)
                                          op: assign_op.Equal
                                          rhs: 
                                            {($ Id.VSub_DollarName '$progdir') <'/'> 
                                              ($ Id.VSub_DollarName '$program')
                                            }
                                          spids: [18194]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [18171 18180]
                                )
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<func_ltwrapper_executable_p>} 
                                              {(DQ ($ Id.VSub_DollarName '$file'))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<func_ltwrapper_scriptname>} 
                                      {(DQ ($ Id.VSub_DollarName '$file'))}
                                    )
                                    (C {<func_source>} 
                                      {
                                        (DQ 
                                          ($ Id.VSub_DollarName '$func_ltwrapper_scriptname_result')
                                        )
                                      }
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:file)
                                          op: assign_op.Equal
                                          rhs: 
                                            {($ Id.VSub_DollarName '$progdir') <'/'> 
                                              ($ Id.VSub_DollarName '$program')
                                            }
                                          spids: [18230]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [18200 18209]
                                )
                              ]
                            )
                          ]
                          spids: [18163 18164 18239 -1]
                        )
                      ]
                    )
                    (C {<func_append_quoted>} {<args>} {(DQ ($ Id.VSub_DollarName '$file'))})
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {($ Id.VSub_DollarName '$opt_dry_run')})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$shlibpath_var'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<eval>} 
                              {
                                (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                                  <'ECHO '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\$'>
                                  ) <'shlibpath_var='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                                  ($ Id.VSub_DollarName '$shlibpath_var') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                                )
                              }
                            )
                            (C {<echo>} {(DQ <'export '> ($ Id.VSub_DollarName '$shlibpath_var'))})
                          ]
                          spids: [18274 18285]
                        )
                      ]
                    )
                    (C {($ Id.VSub_DollarName '$ECHO')} 
                      {(DQ ($ Id.VSub_DollarName '$cmd') ($ Id.VSub_DollarName '$args'))}
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {($ Id.VSub_DollarName '$EXIT_SUCCESS')}
                    )
                  ]
                  spids: [18262 18267]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$shlibpath_var'))})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [(C {<eval>} {(DQ <'export '> ($ Id.VSub_DollarName '$shlibpath_var'))})]
                      spids: [18329 18340]
                    )
                  ]
                )
                (command.ForEach
                  iter_name: lt_var
                  iter_words: [{<LANG>} {<LANGUAGE>} {<LC_ALL>} {<LC_CTYPE>} {<LC_COLLATE>} {<LC_MESSAGES>}]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (C {<eval>} 
                          {
                            (DQ <'if test '> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\"'>
                              ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{save_'> ($ Id.VSub_DollarName '$lt_var') 
                              <'+set}'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' = set; then\n'> <'                '> 
                              ($ Id.VSub_DollarName '$lt_var') <'='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <save_> 
                              ($ Id.VSub_DollarName '$lt_var') <'; export '> ($ Id.VSub_DollarName '$lt_var') <'\n'> <'\t      else\n'> <'\t\t'> 
                              ($ Id.VSub_DollarName '$lt_unset') <' '> ($ Id.VSub_DollarName '$lt_var') <'\n'> <'\t      fi'>
                            )
                          }
                        )
                      ]
                    )
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:exec_cmd)
                      op: assign_op.Equal
                      rhs: 
                        {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <cmd> 
                          ($ Id.VSub_DollarName '$args')
                        }
                      spids: [18423]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<execute>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$opt_mode'))})
        (C {<func_mode_execute>} 
          {
            (braced_var_sub
              token: <Id.VSub_Number 1>
              suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{(DQ ($ Id.VSub_At '$@'))})
            )
          }
        )
      ]
    )
    (command.ShFunction
      name: func_mode_finish
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:libs)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [18473]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:libdirs)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [18476]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:admincmds)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [18479]
                )
              ]
            )
            (command.ForEach
              iter_name: opt
              iter_words: [
                {(DQ ($ Id.VSub_DollarName '$nonopt'))}
                {
                  (braced_var_sub
                    token: <Id.VSub_Number 1>
                    suffix_op: 
                      (suffix_op.Unary
                        tok: <Id.VTest_Plus '+'>
                        arg_word: {(DQ ($ Id.VSub_At '$@'))}
                      )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<test>} {<-d>} {(DQ ($ Id.VSub_DollarName '$opt'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<func_append>} {<libdirs>} {(DQ <' '> ($ Id.VSub_DollarName '$opt'))})
                          ]
                          spids: [18505 18516]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$opt'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<func_lalib_unsafe_p>} 
                                              {(DQ ($ Id.VSub_DollarName '$opt'))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<func_append>} {<libs>} 
                                      {(DQ <' '> ($ Id.VSub_DollarName '$opt'))}
                                    )
                                  ]
                                  spids: [18544 18553]
                                )
                              ]
                              else_action: [
                                (C {<func_warning>} 
                                  {
                                    (DQ <'\''> ($ Id.VSub_DollarName '$opt') 
                                      <'\' is not a valid libtool archive'>
                                    )
                                  }
                                )
                              ]
                            )
                          ]
                          spids: [18530 18541]
                        )
                      ]
                      else_action: [
                        (C {<func_fatal_error>} 
                          {(DQ <'invalid argument \''> ($ Id.VSub_DollarName '$opt') <'\''>)}
                        )
                      ]
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$libs'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$lt_sysroot'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:sysroot_regex)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {($ Id.VSub_DollarName '$ECHO')} 
                                                {(DQ ($ Id.VSub_DollarName '$lt_sysroot'))}
                                              )
                                              (C {($ Id.VSub_DollarName '$SED')} 
                                                {
                                                  (DQ 
                                                    ($ Id.VSub_DollarName '$sed_make_literal_regex')
                                                  )
                                                }
                                              )
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [18629]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:sysroot_cmd)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'s/'> <Id.Lit_BadBackslash '\\'> <'([ \']'> 
                                        <Id.Lit_BadBackslash '\\'> <')'> ($ Id.VSub_DollarName '$sysroot_regex') <'/'> <Id.Lit_BadBackslash '\\'> <'1/g;'>
                                      )
                                    }
                                  spids: [18649]
                                )
                              ]
                            )
                          ]
                          spids: [18615 18626]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:sysroot_cmd)
                              op: assign_op.Equal
                              rhs: (word.Empty)
                              spids: [18666]
                            )
                          ]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ForEach
                              iter_name: lib
                              iter_words: [{($ Id.VSub_DollarName '$libs')}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (C {<echo>} 
                                      {
                                        (DQ <'removing references to '> 
                                          ($ Id.VSub_DollarName '$lt_sysroot') <' and \'=\' prefixes from '> ($ Id.VSub_DollarName '$lib')
                                        )
                                      }
                                    )
                                  ]
                                )
                            )
                          ]
                          spids: [18677 18682]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:tmpdir)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: (C {<func_mktempdir>})
                                  )
                                }
                              spids: [18713]
                            )
                          ]
                        )
                        (command.ForEach
                          iter_name: lib
                          iter_words: [{($ Id.VSub_DollarName '$libs')}]
                          do_arg_iter: F
                          body: 
                            (command.DoGroup
                              children: [
                                (command.Simple
                                  words: [
                                    {($ Id.VSub_DollarName '$SED')}
                                    {<-e>}
                                    {
                                      (DQ ($ Id.VSub_DollarName '$sysroot_cmd') <' s/'> 
                                        <Id.Lit_BadBackslash '\\'> <'([ \']-[LR]'> <Id.Lit_BadBackslash '\\'> <')=/'> <Id.Lit_BadBackslash '\\'> <'1/g; s/'> 
                                        <Id.Lit_BadBackslash '\\'> <'([ \']'> <Id.Lit_BadBackslash '\\'> <')=/'> <Id.Lit_BadBackslash '\\'> <'1/g'>
                                      )
                                    }
                                    {($ Id.VSub_DollarName '$lib')}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {($ Id.VSub_DollarName '$tmpdir') <'/tmp-la'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (C {<mv>} {<-f>} {($ Id.VSub_DollarName '$tmpdir') <'/tmp-la'>} 
                                  {($ Id.VSub_DollarName '$lib')}
                                )
                              ]
                            )
                        )
                        (C {(${ Id.VSub_Name RM) <r>} {(DQ ($ Id.VSub_DollarName '$tmpdir'))})
                      ]
                    )
                  ]
                  spids: [18601 18612]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {<-n>} 
                                  {
                                    (DQ ($ Id.VSub_DollarName '$finish_cmds') 
                                      ($ Id.VSub_DollarName '$finish_eval')
                                    )
                                  }
                                )
                                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$libdirs'))})
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ForEach
                      iter_name: libdir
                      iter_words: [{($ Id.VSub_DollarName '$libdirs')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {<-n>} 
                                              {(DQ ($ Id.VSub_DollarName '$finish_cmds'))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<func_execute_cmds>} 
                                      {(DQ ($ Id.VSub_DollarName '$finish_cmds'))} {(SQ <'admincmds="$admincmds\n'>) (DQ ($ Id.VSub_DollarName '$cmd')) (SQ <'"'>)}
                                    )
                                  ]
                                  spids: [18831 18842]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {<-n>} 
                                              {(DQ ($ Id.VSub_DollarName '$finish_eval'))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<eval>} 
                                      {<Id.Lit_VarLike 'cmds='> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\"'>
                                        ) ($ Id.VSub_DollarName '$finish_eval') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                                      }
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DPipe Id.Op_DPipe]
                                      children: [
                                        (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                        (C {<eval>} {(DQ ($ Id.VSub_DollarName '$cmds'))})
                                        (C {<func_append>} {<admincmds>} 
                                          {(DQ <'\n'> <'       '> ($ Id.VSub_DollarName '$cmds'))}
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [18869 18880]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [18794 18816]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {($ Id.VSub_DollarName '$opt_quiet')})
                (command.ControlFlow
                  token: <Id.ControlFlow_Exit exit>
                  arg_word: {($ Id.VSub_DollarName '$EXIT_SUCCESS')}
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {<-n>} 
                                  {
                                    (DQ ($ Id.VSub_DollarName '$finish_cmds') 
                                      ($ Id.VSub_DollarName '$finish_eval')
                                    )
                                  }
                                )
                                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$libdirs'))})
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} 
                      {(DQ <---------------------------------------------------------------------->)}
                    )
                    (C {<echo>} {(DQ <'Libraries have been installed in:'>)})
                    (command.ForEach
                      iter_name: libdir
                      iter_words: [{($ Id.VSub_DollarName '$libdirs')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (C {($ Id.VSub_DollarName '$ECHO')} 
                              {(DQ <'   '> ($ Id.VSub_DollarName '$libdir'))}
                            )
                          ]
                        )
                    )
                    (C {<echo>})
                    (C {<echo>} 
                      {(DQ <'If you ever happen to want to link against installed libraries'>)}
                    )
                    (C {<echo>} 
                      {(DQ <'in a given directory, LIBDIR, you must either use libtool, and'>)}
                    )
                    (C {<echo>} 
                      {(DQ <'specify the full pathname of the library, or use the \'-LLIBDIR\''>)}
                    )
                    (C {<echo>} {(DQ <'flag during linking and do at least one of the following:'>)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$shlibpath_var'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'   - add LIBDIR to the \''> 
                                  ($ Id.VSub_DollarName '$shlibpath_var') <'\' environment variable'>
                                )
                              }
                            )
                            (C {<echo>} {(DQ <'     during execution'>)})
                          ]
                          spids: [19035 19046]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$runpath_var'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'   - add LIBDIR to the \''> 
                                  ($ Id.VSub_DollarName '$runpath_var') <'\' environment variable'>
                                )
                              }
                            )
                            (C {<echo>} {(DQ <'     during linking'>)})
                          ]
                          spids: [19068 19079]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {<-n>} 
                                      {(DQ ($ Id.VSub_DollarName '$hardcode_libdir_flag_spec'))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:libdir)
                                  op: assign_op.Equal
                                  rhs: {<LIBDIR>}
                                  spids: [19115]
                                )
                              ]
                            )
                            (C {<eval>} 
                              {<Id.Lit_VarLike 'flag='> 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\"'>
                                ) ($ Id.VSub_DollarName '$hardcode_libdir_flag_spec') 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\"'>
                                )
                              }
                            )
                            (C {($ Id.VSub_DollarName '$ECHO')} 
                              {
                                (DQ <'   - use the \''> ($ Id.VSub_DollarName '$flag') 
                                  <'\' linker flag'>
                                )
                              }
                            )
                          ]
                          spids: [19101 19112]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$admincmds'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {($ Id.VSub_DollarName '$ECHO')} 
                              {
                                (DQ <'   - have your system administrator run these commands:'> 
                                  ($ Id.VSub_DollarName '$admincmds')
                                )
                              }
                            )
                          ]
                          spids: [19140 19151]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<test>} {<-f>} {<'/etc/ld.so.conf'>})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} 
                              {
                                (DQ 
                                  <
'   - have your system administrator add LIBDIR to \'/etc/ld.so.conf\''
                                  >
                                )
                              }
                            )
                          ]
                          spids: [19165 19174]
                        )
                      ]
                    )
                    (C {<echo>})
                    (C {<echo>} 
                      {(DQ <'See any operating system documentation about shared libraries for'>)}
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$host')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<solaris2.> <Id.Lit_LBracket '['> <6789> <Id.Lit_RBracket ']'>}
                            {<solaris2.1> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'>}
                          ]
                          action: [
                            (C {<echo>} 
                              {
                                (DQ 
                                  <
'more information, such as the ld(1), crle(1) and ld.so(8) manual'
                                  >
                                )
                              }
                            )
                            (C {<echo>} {(DQ <pages.>)})
                          ]
                          spids: [19205 19214 19231 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (C {<echo>} 
                              {
                                (DQ 
                                  <'more information, such as the ld(1) and ld.so(8) manual pages.'>
                                )
                              }
                            )
                          ]
                          spids: [19234 19235 19245 -1]
                        )
                      ]
                    )
                    (C {<echo>} 
                      {(DQ <---------------------------------------------------------------------->)}
                    )
                  ]
                  spids: [18942 18964]
                )
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_DollarName '$EXIT_SUCCESS')}
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<finish>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$opt_mode'))})
        (C {<func_mode_finish>} 
          {
            (braced_var_sub
              token: <Id.VSub_Number 1>
              suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{(DQ ($ Id.VSub_At '$@'))})
            )
          }
        )
      ]
    )
    (command.ShFunction
      name: func_mode_install
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$debug_cmd')})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          ops: [Id.Op_DPipe Id.Op_DPipe]
                          children: [
                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$SHELL'))} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName '$nonopt'))}
                            )
                            (C {<test>} {<'/bin/sh'>} {<Id.Lit_Equals '='>} 
                              {(DQ ($ Id.VSub_DollarName '$nonopt'))}
                            )
                            (command.Case
                              to_match: {($ Id.VSub_DollarName '$nonopt')}
                              arms: [
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'> <shtool> <Id.Lit_Star '*'>}]
                                  action: [(C {<Id.Lit_Colon ':'>})]
                                  spids: [19354 19357 19360 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [(C {<false>})]
                                  spids: [19362 19363 19366 -1]
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                  action: [
                    (C {<func_quote_for_eval>} {(DQ ($ Id.VSub_DollarName '$nonopt'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:install_prog)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$func_quote_for_eval_result') <' '>)}
                          spids: [19385]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:arg)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [19392]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                  spids: [19315 19371]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:install_prog)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [19402]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:arg)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$nonopt')}
                      spids: [19405]
                    )
                  ]
                )
              ]
            )
            (C {<func_quote_for_eval>} {(DQ ($ Id.VSub_DollarName '$arg'))})
            (C {<func_append>} {<install_prog>} 
              {(DQ ($ Id.VSub_DollarName '$func_quote_for_eval_result'))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:install_shared_prog)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$install_prog')}
                  spids: [19437]
                )
              ]
            )
            (command.Case
              to_match: {(DQ <' '> ($ Id.VSub_DollarName '$install_prog') <' '>)}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\\\'>
                      ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) <'/'> <Id.Lit_RBracket ']'> <cp> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\ '>
                      ) <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:install_cp)
                          op: assign_op.Equal
                          rhs: {<Id.Lit_Colon ':'>}
                          spids: [19463]
                        )
                      ]
                    )
                  ]
                  spids: [19452 19461 19466 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:install_cp)
                          op: assign_op.Equal
                          rhs: {<false>}
                          spids: [19472]
                        )
                      ]
                    )
                  ]
                  spids: [19469 19470 19475 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:dest)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [19486]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:files)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [19489]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:opts)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [19492]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:prev)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [19495]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:install_type)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [19498]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:isdir)
                  op: assign_op.Equal
                  rhs: {<false>}
                  spids: [19501]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:stripme)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [19505]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:no_mode)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_Colon ':'>}
                  spids: [19508]
                )
              ]
            )
            (command.ForEach
              iter_name: arg
              do_arg_iter: T
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:arg2)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [19520]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$dest'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<func_append>} {<files>} {(DQ <' '> ($ Id.VSub_DollarName '$dest'))})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:dest)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$arg')}
                                  spids: [19547]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [19523 19534]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$arg')}
                      arms: [
                        (case_arm
                          pat_list: [{<-d>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:isdir)
                                  op: assign_op.Equal
                                  rhs: {<Id.Lit_Colon ':'>}
                                  spids: [19568]
                                )
                              ]
                            )
                          ]
                          spids: [19565 19566 19571 -1]
                        )
                        (case_arm
                          pat_list: [{<-f>}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: (C {($ Id.VSub_DollarName '$install_cp')})
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Sentence
                                      child: (C {<Id.Lit_Colon ':'>})
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  spids: [19578 19583]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:prev)
                                      op: assign_op.Equal
                                      rhs: {($ Id.VSub_DollarName '$arg')}
                                      spids: [19591]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [19574 19575 19598 -1]
                        )
                        (case_arm
                          pat_list: [{<-g>} {<-m>} {<-o>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:prev)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$arg')}
                                  spids: [19613]
                                )
                              ]
                            )
                          ]
                          spids: [19601 19610 19617 -1]
                        )
                        (case_arm
                          pat_list: [{<-s>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:stripme)
                                  op: assign_op.Equal
                                  rhs: {(DQ <' -s'>)}
                                  spids: [19624]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [19620 19621 19633 -1]
                        )
                        (case_arm
                          pat_list: [{<-> <Id.Lit_Star '*'>}]
                          spids: [19636 19638 19641 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$prev'))})
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.AndOr
                                                      ops: [Id.Op_DAmp]
                                                      children: [
                                                        (C {<test>} {<X-m>} {<Id.Lit_Equals '='>} 
                                                          {(DQ <X> ($ Id.VSub_DollarName '$prev'))}
                                                        )
                                                        (C {<test>} {<-n>} 
                                                          {
                                                            (DQ 
                                                              ($ Id.VSub_DollarName 
'$install_override_mode'
                                                              )
                                                            )
                                                          }
                                                        )
                                                      ]
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:arg2)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {($ Id.VSub_DollarName '$install_override_mode')}
                                                  spids: [19693]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:no_mode)
                                                  op: assign_op.Equal
                                                  rhs: {<false>}
                                                  spids: [19697]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [19666 19690]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:prev)
                                          op: assign_op.Equal
                                          rhs: (word.Empty)
                                          spids: [19704]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [19652 19663]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:dest)
                                      op: assign_op.Equal
                                      rhs: {($ Id.VSub_DollarName '$arg')}
                                      spids: [19710]
                                    )
                                  ]
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Continue continue>
                                )
                              ]
                            )
                          ]
                          spids: [19644 19645 19720 -1]
                        )
                      ]
                    )
                    (C {<func_quote_for_eval>} {(DQ ($ Id.VSub_DollarName '$arg'))})
                    (C {<func_append>} {<install_prog>} 
                      {(DQ <' '> ($ Id.VSub_DollarName '$func_quote_for_eval_result'))}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$arg2'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<func_quote_for_eval>} {(DQ ($ Id.VSub_DollarName '$arg2'))})]
                          spids: [19748 19759]
                        )
                      ]
                    )
                    (C {<func_append>} {<install_shared_prog>} 
                      {(DQ <' '> ($ Id.VSub_DollarName '$func_quote_for_eval_result'))}
                    )
                  ]
                )
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$install_prog'))})
                (C {<func_fatal_help>} {(DQ <'you must specify an install program'>)})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$prev'))})
                (C {<func_fatal_help>} 
                  {(DQ <'the \''> ($ Id.VSub_DollarName '$prev') <'\' option requires an argument'>)}
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$install_override_mode'))})
                                (C {($ Id.VSub_DollarName '$no_mode')})
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {($ Id.VSub_DollarName '$install_cp')})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: (C {<Id.Lit_Colon ':'>})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [19846 19851]
                        )
                      ]
                      else_action: [
                        (C {<func_quote_for_eval>} 
                          {(DQ ($ Id.VSub_DollarName '$install_override_mode'))}
                        )
                        (C {<func_append>} {<install_shared_prog>} 
                          {(DQ <' -m '> ($ Id.VSub_DollarName '$func_quote_for_eval_result'))}
                        )
                      ]
                    )
                  ]
                  spids: [19828 19843]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$files'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$dest'))})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<func_fatal_help>} {(DQ <'no file or destination specified'>)})]
                          spids: [19897 19908]
                        )
                      ]
                      else_action: [(C {<func_fatal_help>} {(DQ <'you must specify a destination'>)})]
                    )
                  ]
                  spids: [19883 19894]
                )
              ]
            )
            (C {<func_stripname>} {(SQ )} {(SQ <'/'>)} {(DQ ($ Id.VSub_DollarName '$dest'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:dest)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$func_stripname_result')}
                  spids: [19953]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-d>} {(DQ ($ Id.VSub_DollarName '$dest'))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:isdir)
                      op: assign_op.Equal
                      rhs: {<Id.Lit_Colon ':'>}
                      spids: [19972]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {($ Id.VSub_DollarName '$isdir')})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:destdir)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$dest')}
                          spids: [19984]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:destname)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [19988]
                        )
                      ]
                    )
                  ]
                  spids: [19976 19981]
                )
              ]
              else_action: [
                (C {<func_dirname_and_basename>} {(DQ ($ Id.VSub_DollarName '$dest'))} {(DQ )} {(DQ <.>)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:destdir)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$func_dirname_result')}
                      spids: [20008]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:destname)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$func_basename_result')}
                      spids: [20012]
                    )
                  ]
                )
                (command.Sentence
                  child: (C {<set>} {<dummy>} {($ Id.VSub_DollarName '$files')})
                  terminator: <Id.Op_Semi _>
                )
                (C {<shift>})
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {<test>} {(DQ ($ Id.VSub_Pound '$#'))} {<-gt>} {<1>})
                    (C {<func_fatal_help>} 
                      {(DQ <'\''> ($ Id.VSub_DollarName '$dest') <'\' is not a directory'>)}
                    )
                  ]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$destdir')}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_LBracket '['> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\\\'>
                      ) <'/'> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
                    }
                    {<Id.Lit_LBracket '['> <A-Za-z> <Id.Lit_RBracket ']'> <Id.Lit_Colon ':'> 
                      <Id.Lit_LBracket '['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <'/'> <Id.Lit_RBracket ']'> 
                      <Id.Lit_Star '*'>
                    }
                  ]
                  spids: [20064 20081 20083 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ForEach
                      iter_name: file
                      iter_words: [{($ Id.VSub_DollarName '$files')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Case
                              to_match: {($ Id.VSub_DollarName '$file')}
                              arms: [
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'> <.lo>}]
                                  spids: [20109 20111 20113 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [
                                    (C {<func_fatal_help>} 
                                      {
                                        (DQ <'\''> ($ Id.VSub_DollarName '$destdir') 
                                          <'\' must be an absolute directory name'>
                                        )
                                      }
                                    )
                                  ]
                                  spids: [20116 20117 20129 -1]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [20086 20087 20138 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:libtool_install_magic)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$magic')}
                  spids: [20153]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:staticlibs)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [20158]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:future_libdirs)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [20161]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:current_libdirs)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [20164]
                )
              ]
            )
            (command.ForEach
              iter_name: file
              iter_words: [{($ Id.VSub_DollarName '$files')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$file')}
                      arms: [
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'> <.> ($ Id.VSub_DollarName '$libext')}]
                          action: [
                            (C {<func_append>} {<staticlibs>} {(DQ <' '> ($ Id.VSub_DollarName '$file'))})
                          ]
                          spids: [20191 20194 20211 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'> <.la>}]
                          action: [
                            (C {<func_resolve_sysroot>} {(DQ ($ Id.VSub_DollarName '$file'))})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:file)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$func_resolve_sysroot_result')}
                                  spids: [20227]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<func_lalib_unsafe_p>} {(DQ ($ Id.VSub_DollarName '$file'))})
                                (C {<func_fatal_help>} 
                                  {
                                    (DQ <'\''> ($ Id.VSub_DollarName '$file') 
                                      <'\' is not a valid libtool archive'>
                                    )
                                  }
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:library_names)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [20256]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:old_library)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [20259]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:relink_command)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [20262]
                                )
                              ]
                            )
                            (C {<func_source>} {(DQ ($ Id.VSub_DollarName '$file'))})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {(DQ <X> ($ Id.VSub_DollarName '$destdir'))} 
                                              {<Id.Lit_Equals '='>} {(DQ <X> ($ Id.VSub_DollarName '$libdir'))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Case
                                      to_match: {(DQ ($ Id.VSub_DollarName '$current_libdirs') <' '>)}
                                      arms: [
                                        (case_arm
                                          pat_list: [
                                            {<Id.Lit_Star '*'> 
                                              (DQ <' '> ($ Id.VSub_DollarName '$libdir') <' '>) <Id.Lit_Star '*'>
                                            }
                                          ]
                                          spids: [20307 20314 20316 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<Id.Lit_Star '*'>}]
                                          action: [
                                            (C {<func_append>} {<current_libdirs>} 
                                              {(DQ <' '> ($ Id.VSub_DollarName '$libdir'))}
                                            )
                                          ]
                                          spids: [20319 20320 20331 -1]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [20277 20294]
                                )
                              ]
                              else_action: [
                                (command.Case
                                  to_match: {(DQ ($ Id.VSub_DollarName '$future_libdirs') <' '>)}
                                  arms: [
                                    (case_arm
                                      pat_list: [
                                        {<Id.Lit_Star '*'> 
                                          (DQ <' '> ($ Id.VSub_DollarName '$libdir') <' '>) <Id.Lit_Star '*'>
                                        }
                                      ]
                                      spids: [20354 20361 20363 -1]
                                    )
                                    (case_arm
                                      pat_list: [{<Id.Lit_Star '*'>}]
                                      action: [
                                        (C {<func_append>} {<future_libdirs>} 
                                          {(DQ <' '> ($ Id.VSub_DollarName '$libdir'))}
                                        )
                                      ]
                                      spids: [20366 20367 20378 -1]
                                    )
                                  ]
                                )
                              ]
                            )
                            (C {<func_dirname>} {(DQ ($ Id.VSub_DollarName '$file'))} {(DQ <'/'>)} {(DQ )})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:dir)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$func_dirname_result')}
                                  spids: [20402]
                                )
                              ]
                            )
                            (C {<func_append>} {<dir>} {(DQ ($ Id.VSub_DollarName '$objdir'))})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {<-n>} 
                                              {(DQ ($ Id.VSub_DollarName '$relink_command'))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:inst_prefix_dir)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {($ Id.VSub_DollarName '$ECHO')} 
                                                        {(DQ ($ Id.VSub_DollarName '$destdir'))}
                                                      )
                                                      (C {($ Id.VSub_DollarName '$SED')} {<-e>} 
                                                        {
                                                          (DQ <'s%'> ($ Id.VSub_DollarName '$libdir') 
                                                            <Id.Lit_Dollar '$'> <'%%'>
                                                          )
                                                        }
                                                      )
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [20434]
                                        )
                                      ]
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<test>} {(DQ ($ Id.VSub_DollarName '$inst_prefix_dir'))} 
                                          {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$destdir'))}
                                        )
                                        (C {<func_fatal_error>} 
                                          {
                                            (DQ <'error: cannot install \''> 
                                              ($ Id.VSub_DollarName '$file') <'\' to a directory not ending in '> ($ Id.VSub_DollarName '$libdir')
                                            )
                                          }
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<test>} {<-n>} 
                                                      {(DQ ($ Id.VSub_DollarName '$inst_prefix_dir'))}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:relink_command)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_Backtick '`'>
                                                        child: 
                                                          (command.Pipeline
                                                            children: [
                                                              (C {($ Id.VSub_DollarName '$ECHO')} 
                                                                {
                                                                  (DQ 
                                                                    ($ Id.VSub_DollarName 
'$relink_command'
                                                                    )
                                                                  )
                                                                }
                                                              )
                                                              (C {($ Id.VSub_DollarName '$SED')} 
                                                                {
                                                                  (DQ 
                                                                    <
's%@inst_prefix_dir@%-inst-prefix-dir '
                                                                    > ($ Id.VSub_DollarName '$inst_prefix_dir') <'%'>
                                                                  )
                                                                }
                                                              )
                                                            ]
                                                            negated: F
                                                          )
                                                      )
                                                    }
                                                  spids: [20531]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [20513 20524]
                                        )
                                      ]
                                      else_action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:relink_command)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (command_sub
                                                    left_token: <Id.Left_Backtick '`'>
                                                    child: 
                                                      (command.Pipeline
                                                        children: [
                                                          (C {($ Id.VSub_DollarName '$ECHO')} 
                                                            {
                                                              (DQ 
                                                                ($ Id.VSub_DollarName 
'$relink_command'
                                                                )
                                                              )
                                                            }
                                                          )
                                                          (C {($ Id.VSub_DollarName '$SED')} 
                                                            {(DQ <'s%@inst_prefix_dir@%%'>)}
                                                          )
                                                        ]
                                                        negated: F
                                                      )
                                                  )
                                                }
                                              spids: [20556]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (C {<func_warning>} 
                                      {(DQ <'relinking \''> ($ Id.VSub_DollarName '$file') <'\''>)}
                                    )
                                    (C {<func_show_eval>} 
                                      {(DQ ($ Id.VSub_DollarName '$relink_command'))} 
                                      {(SQ <'func_fatal_error "error: relink '>) 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\\''>
                                        ) (SQ <'$file'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''>) 
                                        (SQ <' with the above command before installing it"'>)
                                      }
                                    )
                                  ]
                                  spids: [20416 20427]
                                )
                              ]
                            )
                            (command.Sentence
                              child: (C {<set>} {<dummy>} {($ Id.VSub_DollarName '$library_names')})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<shift>})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))})
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:realname)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_Number '$1')}
                                          spids: [20642]
                                        )
                                      ]
                                    )
                                    (C {<shift>})
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:srcname)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$realname')}
                                          spids: [20650]
                                        )
                                      ]
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<test>} {<-n>} 
                                          {(DQ ($ Id.VSub_DollarName '$relink_command'))}
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:srcname)
                                              op: assign_op.Equal
                                              rhs: {(${ Id.VSub_Name realname) <T>}
                                              spids: [20664]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (C {<func_show_eval>} 
                                      {
                                        (DQ ($ Id.VSub_DollarName '$install_shared_prog') <' '> 
                                          ($ Id.VSub_DollarName '$dir') <'/'> ($ Id.VSub_DollarName '$srcname') <' '> ($ Id.VSub_DollarName '$destdir') <'/'> 
                                          ($ Id.VSub_DollarName '$realname')
                                        )
                                      } {(SQ <'exit $?'>)}
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:tstripme)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$stripme')}
                                          spids: [20697]
                                        )
                                      ]
                                    )
                                    (command.Case
                                      to_match: {($ Id.VSub_DollarName '$host_os')}
                                      arms: [
                                        (case_arm
                                          pat_list: [
                                            {<cygwin> <Id.Lit_Star '*'>}
                                            {<mingw> <Id.Lit_Star '*'>}
                                            {<pw32> <Id.Lit_Star '*'>}
                                            {<cegcc> <Id.Lit_Star '*'>}
                                          ]
                                          action: [
                                            (command.Case
                                              to_match: {($ Id.VSub_DollarName '$realname')}
                                              arms: [
                                                (case_arm
                                                  pat_list: [{<Id.Lit_Star '*'> <.dll.a>}]
                                                  action: [
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (sh_lhs_expr.Name name:tstripme)
                                                          op: assign_op.Equal
                                                          rhs: (word.Empty)
                                                          spids: [20740]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                  spids: [20735 20737 20743 -1]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [20708 20725 20749 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<os2> <Id.Lit_Star '*'>}]
                                          action: [
                                            (command.Case
                                              to_match: {($ Id.VSub_DollarName '$realname')}
                                              arms: [
                                                (case_arm
                                                  pat_list: [{<Id.Lit_Star '*'> <_dll.a>}]
                                                  action: [
                                                    (command.ShAssignment
                                                      pairs: [