(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PROGRAM)
          op: assign_op.Equal
          rhs: {<libtool>}
          spids: [227]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PACKAGE)
          op: assign_op.Equal
          rhs: {<libtool>}
          spids: [230]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:VERSION)
          op: assign_op.Equal
          rhs: {<2.2.7a>}
          spids: [233]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TIMESTAMP)
          op: assign_op.Equal
          rhs: {(DQ <' 1.3134 2009-11-29'>)}
          spids: [236]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:package_revision)
          op: assign_op.Equal
          rhs: {<1.3134>}
          spids: [241]
        )
      ]
    )
    (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 {<emulate>} {<sh>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:NULLCMD)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_Colon ':'>}
                  spids: [285]
                )
              ]
            )
            (C {<alias>} {<-g>} {(SQ <'${1+"$@"}'>) <Id.Lit_Equals '='> (SQ <'"$@"'>)})
            (C {<setopt>} {<NO_GLOB_SUBST>})
          ]
          spids: [248 277]
        )
      ]
      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: [334 337 344 -1]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:BIN_SH)
                  op: assign_op.Equal
                  rhs: {<xpg4>}
                  spids: [350]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<export>} {<BIN_SH>})
      ]
    )
    (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: [361]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<export>} {<DUALCASE>})
      ]
    )
    (command.ShFunction
      name: func_fallback_echo
      body: 
        (BraceGroup
          children: [(C {<eval>} {(SQ <'cat <<_LTECHO_EOF\n'> <'$1\n'> <_LTECHO_EOF>)})]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:lt_user_locale)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [407]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:lt_safe_locale)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [409]
        )
      ]
    )
    (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 '\\$'>) <'{'> ($ Id.VSub_DollarName '$lt_var') <'+set}'> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' = set; then\n'> <'          save_'> ($ Id.VSub_DollarName '$lt_var') <'='> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) ($ Id.VSub_DollarName '$lt_var') <'\n'> <'          '> ($ Id.VSub_DollarName '$lt_var') <'=C\n'> 
                  <'\t  export '> ($ Id.VSub_DollarName '$lt_var') <'\n'> <'\t  lt_user_locale='> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$lt_var') <'='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <save_> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'lt_var; '> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <lt_user_locale> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> 
                  <'\t  lt_safe_locale='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$lt_var') <'=C; '> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <lt_safe_locale> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'\tfi'>
                )
              }
            )
          ]
        )
    )
    (C {($ Id.VSub_DollarName '$lt_unset')} {<CDPATH>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:progpath)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number '$0'))}
          spids: [508]
        )
      ]
    )
    (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: {($ Id.VSub_DollarName '$as_echo')}
            )
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name EGREP>
          suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{(DQ <'/bin/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 <'/bin/grep -F'>)})
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name GREP>
          suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{(DQ <'/bin/grep'>)})
        )
      }
    )
    (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 SED>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VTest_Equals '='>
              arg_word: {(DQ <'/mount/endor/wildenhu/local-x86_64/bin/sed'>)}
            )
        )
      }
    )
    (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>}
                        )
                    )
                  )
                }
            )
        )
      }
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name Xsed>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VTest_Equals '='>
              arg_word: {(DQ ($ Id.VSub_DollarName '$SED') <' -e 1s/^X//'>)}
            )
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:EXIT_SUCCESS)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [656]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:EXIT_FAILURE)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [659]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:EXIT_MISMATCH)
          op: assign_op.Equal
          rhs: {<63>}
          spids: [662]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:EXIT_SKIP)
          op: assign_op.Equal
          rhs: {<77>}
          spids: [668]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:exit_status)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$EXIT_SUCCESS')}
          spids: [675]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:lt_nl)
          op: assign_op.Equal
          rhs: {(SQ <'\n'>)}
          spids: [682]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:IFS)
          op: assign_op.Equal
          rhs: {(DQ <' \t'> ($ Id.VSub_DollarName '$lt_nl'))}
          spids: [687]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:dirname)
          op: assign_op.Equal
          rhs: {(DQ <'s,/[^/]*'> <Id.Lit_Dollar '$'> <',,'>)}
          spids: [694]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:basename)
          op: assign_op.Equal
          rhs: {(DQ <'s,^.*/,,'>)}
          spids: [701]
        )
      ]
    )
    (command.ShFunction
      name: func_dirname_and_basename
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_dirname_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>} 
                                {(DQ ($ Id.VSub_DollarName '$dirname'))}
                              )
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [755]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ <X> ($ Id.VSub_DollarName '$func_dirname_result'))} 
                              {<Id.Lit_Equals '='>} {(DQ <X> (${ Id.VSub_Number 1))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_dirname_result)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Number 3))}
                          spids: [801]
                        )
                      ]
                    )
                  ]
                  spids: [779 798]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:func_dirname_result)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_DollarName '$func_dirname_result') (${ Id.VSub_Number 2))}
                      spids: [812]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_basename_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>} 
                                {(DQ ($ Id.VSub_DollarName '$basename'))}
                              )
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [824]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pathcar)
          op: assign_op.Equal
          rhs: {(SQ <'s,^/\\([^/]*\\).*$,\\1,'>)}
          spids: [857]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pathcdr)
          op: assign_op.Equal
          rhs: {(SQ <'s,^/[^/]*,,'>)}
          spids: [862]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:removedotparts)
          op: assign_op.Equal
          rhs: {(SQ <':dotsl\n'> <'\t\ts@/\\./@/@g\n'> <'\t\tt dotsl\n'> <'\t\ts,/\\.$,/,'>)}
          spids: [867]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:collapseslashes)
          op: assign_op.Equal
          rhs: {(SQ <'s@/\\{1,\\}@/@g'>)}
          spids: [875]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:finalslash)
          op: assign_op.Equal
          rhs: {(SQ <'s,/*$,/,'>)}
          spids: [880]
        )
      ]
    )
    (command.ShFunction
      name: func_normal_abspath
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_normal_abspath_result)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [913]
                )
              ]
            )
            (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: [916]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_normal_abspath_altnamespace)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [920]
                )
              ]
            )
            (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: [957]
                        )
                      ]
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Return return>)
                  ]
                  spids: [930 932 964 -1]
                )
                (case_arm
                  pat_list: [{<'///'> <Id.Lit_Star '*'>}]
                  spids: [979 981 988 -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: [1008]
                        )
                      ]
                    )
                  ]
                  spids: [991 993 1012 -1]
                )
                (case_arm
                  pat_list: [{<'/'> <Id.Lit_Star '*'>}]
                  spids: [1015 1017 1024 -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: [1035]
                        )
                      ]
                    )
                  ]
                  spids: [1027 1028 1045 -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 '$removedotparts'))} {<-e>} {(DQ ($ Id.VSub_DollarName '$collapseslashes'))} {<-e>} {(DQ ($ Id.VSub_DollarName '$finalslash'))}
                              )
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [1063]
                )
              ]
            )
            (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>} 
                                      {(DQ ($ Id.VSub_DollarName '$func_normal_abspath_tpath'))} {<Id.Lit_Equals '='>} {<'/'>}
                                    )
                                  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: [1150]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1135 1147]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [1114 1128]
                        )
                      ]
                    )
                    (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 '$pathcar'))}
                                      )
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [1163]
                        )
                      ]
                    )
                    (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 '$pathcdr'))}
                                      )
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [1190]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$func_normal_abspath_tcomponent')}
                      arms: [
                        (case_arm
                          pat_list: [{(DQ )}]
                          spids: [1228 1230 1237 -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: [1255]
                                )
                              ]
                            )
                          ]
                          spids: [1240 1241 1259 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (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_result') <'/'> 
                                      ($ Id.VSub_DollarName '$func_normal_abspath_tcomponent')
                                    }
                                  spids: [1270]
                                )
                              ]
                            )
                          ]
                          spids: [1262 1263 1276 -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: [1289]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_relative_path
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_relative_path_result)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [1319]
                )
              ]
            )
            (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: [1329]
                )
              ]
            )
            (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: [1340]
                )
              ]
            )
            (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: [1376]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [1368 1369 1382 -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: [1408]
                                )
                              ]
                            )
                            (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: [1426]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1412 1423]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [1385 1387 1436 -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_Name func_dirname_result)}
                                  spids: [1448]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} 
                                              {
                                                (DQ <x> 
                                                  ($ Id.VSub_DollarName '$func_relative_path_tlibdir')
                                                )
                                              } {<Id.Lit_Equals '='>} {<x>}
                                            )
                                          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: [1476]
                                        )
                                      ]
                                    )
                                    (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: [1481]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [1454 1469]
                                )
                              ]
                            )
                            (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: [1491]
                                )
                              ]
                            )
                          ]
                          spids: [1439 1440 1496 -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: [1524]
                )
              ]
            )
            (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>} {(DQ <x> ($ Id.VSub_DollarName '$func_stripname_result'))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<x>}
                            )
                          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_Name func_relative_path_result) <'/'> 
                              (${ Id.VSub_Name func_stripname_result)
                            }
                          spids: [1562]
                        )
                      ]
                    )
                  ]
                  spids: [1543 1559]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {<Id.KW_Bang '!'>} {<-z>} 
                              {(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: [1619]
                        )
                      ]
                    )
                  ]
                  spids: [1588 1601]
                )
              ]
            )
          ]
        )
    )
    (C {<func_dirname_and_basename>} {(DQ ($ Id.VSub_DollarName '$progpath'))})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:progname)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$func_basename_result')}
          spids: [1637]
        )
      ]
    )
    (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: [1651 1663 1665 -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: {($ Id.VSub_DollarName '$func_dirname_result')}
                  spids: [1677]
                )
              ]
            )
            (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: [1681]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:progpath)
                  op: assign_op.Equal
                  rhs: 
                    {(DQ ($ Id.VSub_DollarName '$progdir') <'/'> ($ Id.VSub_DollarName '$progname'))}
                  spids: [1697]
                )
              ]
            )
          ]
          spids: [1668 1674 1705 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:save_IFS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$IFS'))}
                  spids: [1712]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_Colon ':'>}
                  spids: [1718]
                )
              ]
            )
            (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: {(DQ ($ Id.VSub_DollarName '$save_IFS'))}
                          spids: [1734]
                        )
                      ]
                    )
                    (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: {(DQ ($ Id.VSub_DollarName '$save_IFS'))}
                  spids: [1758]
                )
              ]
            )
            (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: [1774]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:progpath)
                  op: assign_op.Equal
                  rhs: 
                    {(DQ ($ Id.VSub_DollarName '$progdir') <'/'> ($ Id.VSub_DollarName '$progname'))}
                  spids: [1782]
                )
              ]
            )
          ]
          spids: [1708 1709 1790 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:Xsed)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name SED)) (SQ <' -e 1s/^X//'>)}
          spids: [1801]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sed_quote_subst)
          op: assign_op.Equal
          rhs: {(SQ <'s/\\([`"$\\\\]\\)/\\\\\\1/g'>)}
          spids: [1811]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:double_quote_subst)
          op: assign_op.Equal
          rhs: {(SQ <'s/\\(["`\\\\]\\)/\\\\\\1/g'>)}
          spids: [1820]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:bs)
          op: assign_op.Equal
          rhs: {(SQ <'\\\\'>)}
          spids: [1841]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:bs2)
          op: assign_op.Equal
          rhs: {(SQ <'\\\\\\\\'>)}
          spids: [1846]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:bs4)
          op: assign_op.Equal
          rhs: {(SQ <'\\\\\\\\\\\\\\\\'>)}
          spids: [1851]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:dollar)
          op: assign_op.Equal
          rhs: {(SQ <'\\$'>)}
          spids: [1856]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sed_double_backslash)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'  s/'> ($ Id.VSub_DollarName '$bs4') <'/&'> 
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <'\n'> <'/g\n'> <'  s/^'> ($ Id.VSub_DollarName '$bs2') ($ Id.VSub_DollarName '$dollar') <'/'> 
                ($ Id.VSub_DollarName '$bs') <'&/\n'> <'  s/'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <'([^'> 
                ($ Id.VSub_DollarName '$bs') <']'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <')'> ($ Id.VSub_DollarName '$bs2') 
                ($ Id.VSub_DollarName '$dollar') <'/'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <1> ($ Id.VSub_DollarName '$bs2') 
                ($ Id.VSub_DollarName '$bs') ($ Id.VSub_DollarName '$dollar') <'/g\n'> <'  s/'> <Id.Lit_BadBackslash '\\'> <'n//g'>
              )
            }
          spids: [1861]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:opt_dry_run)
          op: assign_op.Equal
          rhs: {<false>}
          spids: [1901]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:opt_help)
          op: assign_op.Equal
          rhs: {<false>}
          spids: [1904]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:opt_quiet)
          op: assign_op.Equal
          rhs: {<false>}
          spids: [1907]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:opt_verbose)
          op: assign_op.Equal
          rhs: {<false>}
          spids: [1910]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:opt_warning)
          op: assign_op.Equal
          rhs: {<Id.Lit_Colon ':'>}
          spids: [1913]
        )
      ]
    )
    (command.ShFunction
      name: func_echo
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$ECHO')} 
              {
                (DQ ($ Id.VSub_DollarName '$progname') 
                  (braced_var_sub
                    token: <Id.VSub_Name mode>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<': '>})
                  ) ($ Id.VSub_DollarName '$mode') <': '> ($ Id.VSub_Star '$*')
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: func_verbose
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {($ Id.VSub_DollarName '$opt_verbose')})
                (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_echo_all
      body: (BraceGroup children:[(C {($ Id.VSub_DollarName '$ECHO')} {(DQ ($ Id.VSub_Star '$*'))})])
    )
    (command.ShFunction
      name: func_error
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$ECHO')}
                {
                  (DQ ($ Id.VSub_DollarName '$progname') 
                    (braced_var_sub
                      token: <Id.VSub_Name mode>
                      suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<': '>})
                    ) ($ Id.VSub_DollarName '$mode') <': '>
                  ) 
                  (braced_var_sub
                    token: <Id.VSub_Number 1>
                    suffix_op: 
                      (suffix_op.Unary
                        tok: <Id.VTest_Plus '+'>
                        arg_word: {(DQ ($ Id.VSub_At '$@'))}
                      )
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: func_warning
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {($ Id.VSub_DollarName '$opt_warning')})
                (command.Simple
                  words: [
                    {($ Id.VSub_DollarName '$ECHO')}
                    {
                      (DQ ($ Id.VSub_DollarName '$progname') 
                        (braced_var_sub
                          token: <Id.VSub_Name mode>
                          suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<': '>})
                        ) ($ Id.VSub_DollarName '$mode') <': warning: '>
                      ) 
                      (braced_var_sub
                        token: <Id.VSub_Number 1>
                        suffix_op: 
                          (suffix_op.Unary
                            tok: <Id.VTest_Plus '+'>
                            arg_word: {(DQ ($ Id.VSub_At '$@'))}
                          )
                      )
                    }
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
              ]
            )
            (C {<Id.Lit_Colon ':'>})
          ]
        )
    )
    (command.ShFunction
      name: func_fatal_error
      body: 
        (BraceGroup
          children: [
            (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_fatal_help
      body: 
        (BraceGroup
          children: [
            (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 '$@'))}
                    )
                )
              }
            )
            (C {<func_fatal_error>} {(DQ ($ Id.VSub_DollarName '$help'))})
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:help)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'Try '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                ($ Id.VSub_DollarName '$progname') <' --help\' for more information.'>
              )
            }
          spids: [2181]
        )
      ]
    )
    (command.ShFunction
      name: func_grep
      body: 
        (BraceGroup
          children: [
            (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.ShFunction
      name: func_mkdir_p
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_directory_path)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [2242]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_dir_list)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [2248]
                )
              ]
            )
            (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 '$my_directory_path'))})
                                (C {<test>} {(DQ ($ Id.VSub_DollarName '$opt_dry_run'))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <':'>)}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$my_directory_path')}
                      arms: [
                        (case_arm
                          pat_list: [{<-> <Id.Lit_Star '*'>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:my_directory_path)
                                  op: assign_op.Equal
                                  rhs: {(DQ <'./'> ($ Id.VSub_DollarName '$my_directory_path'))}
                                  spids: [2297]
                                )
                              ]
                            )
                          ]
                          spids: [2293 2295 2303 -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 '$my_directory_path'))}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:my_dir_list)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$my_directory_path') <':'> 
                                        ($ Id.VSub_DollarName '$my_dir_list')
                                      )
                                    }
                                  spids: [2338]
                                )
                              ]
                            )
                            (command.Case
                              to_match: {($ Id.VSub_DollarName '$my_directory_path')}
                              arms: [
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>}]
                                  spids: [2357 2360 2362 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                                  spids: [2364 2365 2369 -1]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:my_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 '$my_directory_path'))}
                                              )
                                              (C {($ Id.VSub_DollarName '$SED')} {<-e>} 
                                                {(DQ ($ Id.VSub_DollarName '$dirname'))}
                                              )
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [2379]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:my_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 '$my_dir_list'))}
                                      )
                                      (C {($ Id.VSub_DollarName '$SED')} {(SQ <'s,:*$,,'>)})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [2404]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:save_mkdir_p_IFS)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_DollarName '$IFS'))}
                              spids: [2425]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:IFS)
                          op: assign_op.Equal
                          rhs: {(SQ <':'>)}
                          spids: [2431]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: my_dir
                      iter_words: [{($ Id.VSub_DollarName '$my_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: {(DQ ($ Id.VSub_DollarName '$save_mkdir_p_IFS'))}
                                  spids: [2449]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (command.Simple
                                  words: [
                                    {($ Id.VSub_DollarName '$MKDIR')}
                                    {(DQ ($ Id.VSub_DollarName '$my_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: {(DQ ($ Id.VSub_DollarName '$save_mkdir_p_IFS'))}
                          spids: [2484]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<test>} {<-d>} {(DQ ($ Id.VSub_DollarName '$my_directory_path'))})
                        (C {<func_fatal_error>} 
                          {
                            (DQ <'Failed to create '> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\`'>
                              ) ($ Id.VSub_Number '$1') <'\''>
                            )
                          }
                        )
                      ]
                    )
                  ]
                  spids: [2252 2278]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_mktempdir
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_template)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (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: [2543]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$opt_dry_run'))} 
                              {<Id.Lit_Equals '='>} {(DQ <':'>)}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:my_tmpdir)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name my_template) <-> ($ Id.VSub_Dollar '$$'))}
                          spids: [2583]
                        )
                      ]
                    )
                  ]
                  spids: [2561 2576]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:my_tmpdir)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Simple
                                words: [
                                  {<mktemp>}
                                  {<-d>}
                                  {(DQ (${ Id.VSub_Name my_template) <-XXXXXXXX>)}
                                ]
                                redirects: [
                                  (redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                          )
                        }
                      spids: [2601]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<test>} {<Id.KW_Bang '!'>} {<-d>} 
                                  {(DQ ($ Id.VSub_DollarName '$my_tmpdir'))}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:my_tmpdir)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ (${ Id.VSub_Name my_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: [2642]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:save_mktempdir_umask)
                              op: assign_op.Equal
                              rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<umask>}))}
                              spids: [2658]
                            )
                          ]
                        )
                        (C {<umask>} {<0077>})
                        (C {($ Id.VSub_DollarName '$MKDIR')} {(DQ ($ Id.VSub_DollarName '$my_tmpdir'))})
                        (C {<umask>} {($ Id.VSub_DollarName '$save_mktempdir_umask')})
                      ]
                      spids: [2622 2635]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<test>} {<-d>} {(DQ ($ Id.VSub_DollarName '$my_tmpdir'))})
                    (C {<func_fatal_error>} 
                      {
                        (DQ <'cannot create temporary directory '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\`'>
                          ) ($ Id.VSub_DollarName '$my_tmpdir') <'\''>
                        )
                      }
                    )
                  ]
                )
              ]
            )
            (C {($ Id.VSub_DollarName '$ECHO')} {(DQ ($ Id.VSub_DollarName '$my_tmpdir'))})
          ]
        )
    )
    (command.ShFunction
      name: func_quote_for_eval
      body: 
        (BraceGroup
          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:func_quote_for_eval_unquoted_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 '$sed_quote_subst'))}
                                      )
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [2771]
                        )
                      ]
                    )
                  ]
                  spids: [2760 2768 2790 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_quote_for_eval_unquoted_result)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Number '$1'))}
                          spids: [2797]
                        )
                      ]
                    )
                  ]
                  spids: [2793 2794 2802 -1]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$func_quote_for_eval_unquoted_result')}
              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:func_quote_for_eval_result)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                ($ Id.VSub_DollarName '$func_quote_for_eval_unquoted_result') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                              )
                            }
                          spids: [2868]
                        )
                      ]
                    )
                  ]
                  spids: [2836 2865 2876 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:func_quote_for_eval_result)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$func_quote_for_eval_unquoted_result'))}
                          spids: [2883]
                        )
                      ]
                    )
                  ]
                  spids: [2879 2880 -1 2889]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_quote_for_expand
      body: 
        (BraceGroup
          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 '\\"'>
                      ) <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:my_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 '$double_quote_subst'))} {<-e>} {(DQ ($ Id.VSub_DollarName '$sed_double_backslash'))}
                                      )
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [2929]
                        )
                      ]
                    )
                  ]
                  spids: [2919 2926 2961 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:my_arg)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Number '$1'))}
                          spids: [2968]
                        )
                      ]
                    )
                  ]
                  spids: [2964 2965 2973 -1]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$my_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:my_arg)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                ($ Id.VSub_DollarName '$my_arg') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                              )
                            }
                          spids: [3035]
                        )
                      ]
                    )
                  ]
                  spids: [3003 3032 3043 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_quote_for_expand_result)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$my_arg'))}
                  spids: [3050]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_show_eval
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_cmd)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [3079]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_fail_exp)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Number 2>
                          suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<':'>})
                        )
                      )
                    }
                  spids: [3085]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C 
                  {
                    (braced_var_sub
                      token: <Id.VSub_Name opt_silent>
                      suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<false>})
                    )
                  }
                )
                (BraceGroup
                  children: [
                    (C {<func_quote_for_expand>} {(DQ ($ Id.VSub_DollarName '$my_cmd'))})
                    (C {<eval>} 
                      {(DQ <'func_echo '> ($ Id.VSub_DollarName '$func_quote_for_expand_result'))}
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name opt_dry_run>
                                  suffix_op: 
                                    (suffix_op.Unary
                                      tok: <Id.VTest_Hyphen ->
                                      arg_word: {<false>}
                                    )
                                )
                              }
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
                  spids: [3126 3135]
                )
              ]
              else_action: [
                (C {<eval>} {(DQ ($ Id.VSub_DollarName '$my_cmd'))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:my_status)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_QMark '$?')}
                      spids: [3150]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<test>} {(DQ ($ Id.VSub_DollarName '$my_status'))} {<-eq>} {<0>})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.Sentence
                          child: (C {<Id.Lit_Colon ':'>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                      spids: [3154 3167]
                    )
                  ]
                  else_action: [
                    (C {<eval>} 
                      {
                        (DQ <'(exit '> ($ Id.VSub_DollarName '$my_status') <'); '> 
                          ($ Id.VSub_DollarName '$my_fail_exp')
                        )
                      }
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_show_eval_locale
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_cmd)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [3214]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_fail_exp)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Number 2>
                          suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<':'>})
                        )
                      )
                    }
                  spids: [3220]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C 
                  {
                    (braced_var_sub
                      token: <Id.VSub_Name opt_silent>
                      suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<false>})
                    )
                  }
                )
                (BraceGroup
                  children: [
                    (C {<func_quote_for_expand>} {(DQ ($ Id.VSub_DollarName '$my_cmd'))})
                    (C {<eval>} 
                      {(DQ <'func_echo '> ($ Id.VSub_DollarName '$func_quote_for_expand_result'))}
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name opt_dry_run>
                                  suffix_op: 
                                    (suffix_op.Unary
                                      tok: <Id.VTest_Hyphen ->
                                      arg_word: {<false>}
                                    )
                                )
                              }
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
                  spids: [3261 3270]
                )
              ]
              else_action: [
                (C {<eval>} 
                  {
                    (DQ ($ Id.VSub_DollarName '$lt_user_locale') <'\n'> <'\t    '> 
                      ($ Id.VSub_DollarName '$my_cmd')
                    )
                  }
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:my_status)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_QMark '$?')}
                      spids: [3288]
                    )
                  ]
                )
                (C {<eval>} {(DQ ($ Id.VSub_DollarName '$lt_safe_locale'))})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<test>} {(DQ ($ Id.VSub_DollarName '$my_status'))} {<-eq>} {<0>})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.Sentence
                          child: (C {<Id.Lit_Colon ':'>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                      spids: [3299 3312]
                    )
                  ]
                  else_action: [
                    (C {<eval>} 
                      {
                        (DQ <'(exit '> ($ Id.VSub_DollarName '$my_status') <'); '> 
                          ($ Id.VSub_DollarName '$my_fail_exp')
                        )
                      }
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_version
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$SED')}
                {<-n>}
                {
                  (SQ <'/(C)/!b go\n'> <'\t:more\n'> <'\t/\\./!{\n'> <'\t  N\n'> <'\t  s/\\n# //\n'> 
                    <'\t  b more\n'> <'\t}\n'> <'\t:go\n'> <'\t/^# '>
                  ) ($ Id.VSub_DollarName '$PROGRAM') 
                  (SQ <' (GNU /,/# warranty; / {\n'> <'        s/^# //\n'> <'\ts/^# *$//\n'> 
                    <'        s/\\((C)\\)[ 0-9,-]*\\( [1-9][0-9]*\\)/\\1\\2/\n'> <'        p\n'> <'     }'>
                  )
                }
              ]
              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_usage
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$SED')}
                {<-n>}
                {
                  (SQ <'/^# Usage:/,/^#  *-h/ {\n'> <'        s/^# //\n'> <'\ts/^# *$//\n'> 
                    <'\ts/\\$progname/'>
                  ) ($ Id.VSub_DollarName '$progname') (SQ <'/\n'> <'\tp\n'> <'    }'>)
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_DollarName '$progpath'))}
                )
              ]
              do_fork: T
            )
            (C {<echo>})
            (C {($ Id.VSub_DollarName '$ECHO')} 
              {
                (DQ <'run '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                  ($ Id.VSub_DollarName '$progname') <' --help | more\' for full usage'>
                )
              }
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_QMark '$?')}
            )
          ]
        )
    )
    (command.ShFunction
      name: func_help
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$SED')}
                {<-n>}
                {
                  (SQ <'/^# Usage:/,/# Report bugs to/ {\n'> <'        s/^# //\n'> <'\ts/^# *$//\n'> 
                    <'\ts*\\$progname*'>
                  ) ($ Id.VSub_DollarName '$progname') (SQ <'*\n'> <'\ts*\\$host*'>) (DQ ($ Id.VSub_DollarName '$host')) 
                  (SQ <'*\n'> <'\ts*\\$SHELL*'>) (DQ ($ Id.VSub_DollarName '$SHELL')) (SQ <'*\n'> <'\ts*\\$LTCC*'>) (DQ ($ Id.VSub_DollarName '$LTCC')) 
                  (SQ <'*\n'> <'\ts*\\$LTCFLAGS*'>) (DQ ($ Id.VSub_DollarName '$LTCFLAGS')) (SQ <'*\n'> <'\ts*\\$LD*'>) (DQ ($ Id.VSub_DollarName '$LD')) 
                  (SQ <'*\n'> <'\ts/\\$with_gnu_ld/'>) (DQ ($ Id.VSub_DollarName '$with_gnu_ld')) (SQ <'/\n'> <'\ts/\\$automake_version/'>) 
                  (DQ 
                    (command_sub
                      left_token: <Id.Left_Backtick '`'>
                      child: 
                        (command.Pipeline
                          children: [
                            (command.Subshell
                              child: (C {<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
                        )
                    )
                  ) (SQ <'/\n'> <'\ts/\\$autoconf_version/'>) 
                  (DQ 
                    (command_sub
                      left_token: <Id.Left_Backtick '`'>
                      child: 
                        (command.Pipeline
                          children: [
                            (command.Subshell
                              child: (C {<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
                        )
                    )
                  ) (SQ <'/\n'> <'\tp\n'> <'     }'>)
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_DollarName '$progpath'))}
                )
              ]
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ret)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [3582]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-z>} {(DQ ($ Id.VSub_Number '$1'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {($ Id.VSub_DollarName '$ret')}
                    )
                  ]
                  spids: [3586 3597]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_missing_arg
      body: 
        (BraceGroup
          children: [
            (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: [3635]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:exit_cmd)
          op: assign_op.Equal
          rhs: {<Id.Lit_Colon ':'>}
          spids: [3641]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:magic)
          op: assign_op.Equal
          rhs: {(DQ <'%%%MAGIC variable%%%'>)}
          spids: [3650]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:magic_exe)
          op: assign_op.Equal
          rhs: {(DQ <'%%%MAGIC EXE variable%%%'>)}
          spids: [3655]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:nonopt)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [3667]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:execute_dlfiles)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [3669]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:preserve_args)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [3671]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:lo2o)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'s/'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <.lo> 
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'/.'> (${ Id.VSub_Name objext) <'/'>
              )
            }
          spids: [3673]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:o2lo)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'s/'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <.> 
                (${ Id.VSub_Name objext) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'/.lo/'>
              )
            }
          spids: [3686]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:extracted_archives)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [3698]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:extracted_serial)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [3700]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:opt_dry_run)
          op: assign_op.Equal
          rhs: {<false>}
          spids: [3704]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:opt_finish)
          op: assign_op.Equal
          rhs: {<Id.Lit_Colon ':'>}
          spids: [3707]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:opt_duplicate_deps)
          op: assign_op.Equal
          rhs: {<false>}
          spids: [3710]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:opt_silent)
          op: assign_op.Equal
          rhs: {<false>}
          spids: [3713]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:opt_debug)
          op: assign_op.Equal
          rhs: {<Id.Lit_Colon ':'>}
          spids: [3716]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:exec_cmd)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [3729]
        )
      ]
    )
    (command.ShFunction
      name: func_fatal_configuration
      body: 
        (BraceGroup
          children: [
            (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 '$@'))}
                    )
                )
              }
            )
            (C {<func_error>} 
              {
                (DQ <'See the '> ($ Id.VSub_DollarName '$PACKAGE') 
                  <' documentation for more information.'>
                )
              }
            )
            (C {<func_fatal_error>} {(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: [3793]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:re_endcf)
                  op: assign_op.Equal
                  rhs: {(SQ <'^# ### END LIBTOOL'>)}
                  spids: [3799]
                )
              ]
            )
            (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>} {(DQ ($ Id.VSub_DollarName '$build_libtool_libs'))} 
                              {<Id.Lit_Equals '='>} {<yes>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(DQ <'enable shared libraries'>)})]
                  spids: [3904 3917]
                )
              ]
              else_action: [(C {<echo>} {(DQ <'disable shared libraries'>)})]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$build_old_libs'))} 
                              {<Id.Lit_Equals '='>} {<yes>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(DQ <'enable static libraries'>)})]
                  spids: [3940 3953]
                )
              ]
              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: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [4008]
                )
              ]
            )
            (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: [4015]
                )
              ]
            )
            (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: [4023]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sed_extractcf)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'/'> ($ Id.VSub_DollarName '$re_begincf') <'/,/'> 
                        ($ Id.VSub_DollarName '$re_endcf') <'/p'>
                      )
                    }
                  spids: [4031]
                )
              ]
            )
            (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: [4053 4061 4072 -1]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$tagname')}
              arms: [
                (case_arm pat_list:[{<CC>}] spids:[4094 4095 4097 -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: [4126]
                                )
                              ]
                            )
                            (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: [4151]
                                )
                              ]
                            )
                            (C {<eval>} {(DQ ($ Id.VSub_DollarName '$extractedcf'))})
                          ]
                          spids: [4104 4123]
                        )
                      ]
                      else_action: [
                        (C {<func_error>} 
                          {(DQ <'ignoring unknown tag '> ($ Id.VSub_DollarName '$tagname'))}
                        )
                      ]
                    )
                  ]
                  spids: [4100 4101 4194 -1]
                )
              ]
            )
          ]
        )
    )
    (BraceGroup
      children: [
        (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: [4223 4230 4256 -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: [4259 4272 4298 -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: [4301 4314 4340 -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: [4343 4354 4380 -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: [4383 4396 4422 -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: [4425 4432 4458 -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: [4461 4478 4504 -1]
            )
          ]
        )
        (command.WhileUntil
          keyword: <Id.KW_While while>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {(DQ ($ Id.VSub_Pound '$#'))} {<-gt>} {<0>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          body: 
            (command.DoGroup
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:opt)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_Number '$1'))}
                      spids: [4531]
                    )
                  ]
                )
                (C {<shift>})
                (command.Case
                  to_match: {($ Id.VSub_DollarName '$opt')}
                  arms: [
                    (case_arm
                      pat_list: [{<--config>}]
                      action: [(C {<func_config>})]
                      spids: [4548 4549 4553 -1]
                    )
                    (case_arm
                      pat_list: [{<--debug>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:preserve_args)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$preserve_args') <' '> 
                                    ($ Id.VSub_DollarName '$opt')
                                  )
                                }
                              spids: [4560]
                            )
                          ]
                        )
                        (C {<func_echo>} {(DQ <'enabling shell trace mode'>)})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:opt_debug)
                              op: assign_op.Equal
                              rhs: {(SQ <'set -x'>)}
                              spids: [4575]
                            )
                          ]
                        )
                        (C {($ Id.VSub_DollarName '$opt_debug')})
                      ]
                      spids: [4557 4558 4584 -1]
                    )
                    (case_arm
                      pat_list: [{<-dlopen>}]
                      action: [
                        (command.AndOr
                          ops: [Id.Op_DAmp Id.Op_DAmp]
                          children: [
                            (C {<test>} {(DQ ($ Id.VSub_Pound '$#'))} {<-eq>} {<0>})
                            (C {<func_missing_arg>} {(DQ ($ Id.VSub_DollarName '$opt'))})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:execute_dlfiles)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$execute_dlfiles') <' '> 
                                    ($ Id.VSub_Number '$1')
                                  )
                                }
                              spids: [4614]
                            )
                          ]
                        )
                        (C {<shift>})
                      ]
                      spids: [4588 4589 4625 -1]
                    )
                    (case_arm
                      pat_list: [{<--dry-run>} {<-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: [4636]
                            )
                          ]
                        )
                      ]
                      spids: [4629 4634 4639 -1]
                    )
                    (case_arm
                      pat_list: [{<--features>}]
                      action: [(C {<func_features>})]
                      spids: [4642 4643 4647 -1]
                    )
                    (case_arm
                      pat_list: [{<--finish>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:mode)
                              op: assign_op.Equal
                              rhs: {(DQ <finish>)}
                              spids: [4653]
                            )
                          ]
                        )
                      ]
                      spids: [4650 4651 4658 -1]
                    )
                    (case_arm
                      pat_list: [{<--no-finish>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:opt_finish)
                              op: assign_op.Equal
                              rhs: {<false>}
                              spids: [4664]
                            )
                          ]
                        )
                      ]
                      spids: [4661 4662 4667 -1]
                    )
                    (case_arm
                      pat_list: [{<--mode>}]
                      action: [
                        (command.AndOr
                          ops: [Id.Op_DAmp Id.Op_DAmp]
                          children: [
                            (C {<test>} {(DQ ($ Id.VSub_Pound '$#'))} {<-eq>} {<0>})
                            (C {<func_missing_arg>} {(DQ ($ Id.VSub_DollarName '$opt'))})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                        )
                        (command.Case
                          to_match: {($ Id.VSub_Number '$1')}
                          arms: [
                            (case_arm
                              pat_list: [{<clean>}]
                              spids: [4708 4709 4711 -1]
                            )
                            (case_arm
                              pat_list: [{<compile>}]
                              spids: [4714 4715 4717 -1]
                            )
                            (case_arm
                              pat_list: [{<execute>}]
                              spids: [4720 4721 4723 -1]
                            )
                            (case_arm
                              pat_list: [{<finish>}]
                              spids: [4726 4727 4729 -1]
                            )
                            (case_arm
                              pat_list: [{<install>}]
                              spids: [4732 4733 4735 -1]
                            )
                            (case_arm
                              pat_list: [{<link>}]
                              spids: [4738 4739 4741 -1]
                            )
                            (case_arm
                              pat_list: [{<relink>}]
                              spids: [4744 4745 4747 -1]
                            )
                            (case_arm
                              pat_list: [{<uninstall>}]
                              spids: [4750 4751 4753 -1]
                            )
                            (case_arm
                              pat_list: [{<Id.Lit_Star '*'>}]
                              action: [
                                (C {<func_error>} 
                                  {(DQ <'invalid argument for '> ($ Id.VSub_DollarName '$opt'))}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:exit_cmd)
                                      op: assign_op.Equal
                                      rhs: {<Id.ControlFlow_Exit exit>}
                                      spids: [4772]
                                    )
                                  ]
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Break break>
                                )
                              ]
                              spids: [4761 4762 4779 -1]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:mode)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_Number '$1'))}
                              spids: [4786]
                            )
                          ]
                        )
                        (C {<shift>})
                      ]
                      spids: [4671 4672 4795 -1]
                    )
                    (case_arm
                      pat_list: [{<--preserve-dup-deps>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:opt_duplicate_deps)
                              op: assign_op.Equal
                              rhs: {<Id.Lit_Colon ':'>}
                              spids: [4803]
                            )
                          ]
                        )
                      ]
                      spids: [4799 4800 4806 -1]
                    )
                    (case_arm
                      pat_list: [{<--quiet>} {<--silent>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:preserve_args)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$preserve_args') <' '> 
                                    ($ Id.VSub_DollarName '$opt')
                                  )
                                }
                              spids: [4815]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:opt_silent)
                              op: assign_op.Equal
                              rhs: {<Id.Lit_Colon ':'>}
                              spids: [4823]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:opt_verbose)
                              op: assign_op.Equal
                              rhs: {<false>}
                              spids: [4827]
                            )
                          ]
                        )
                      ]
                      spids: [4810 4813 4831 -1]
                    )
                    (case_arm
                      pat_list: [{<--no-quiet>} {<--no-silent>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:preserve_args)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$preserve_args') <' '> 
                                    ($ Id.VSub_DollarName '$opt')
                                  )
                                }
                              spids: [4841]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:opt_silent)
                              op: assign_op.Equal
                              rhs: {<false>}
                              spids: [4849]
                            )
                          ]
                        )
                      ]
                      spids: [4835 4838 4853 -1]
                    )
                    (case_arm
                      pat_list: [{<--verbose>} {<-v>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:preserve_args)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$preserve_args') <' '> 
                                    ($ Id.VSub_DollarName '$opt')
                                  )
                                }
                              spids: [4863]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:opt_silent)
                              op: assign_op.Equal
                              rhs: {<false>}
                              spids: [4871]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:opt_verbose)
                              op: assign_op.Equal
                              rhs: {<Id.Lit_Colon ':'>}
                              spids: [4875]
                            )
                          ]
                        )
                      ]
                      spids: [4857 4861 4879 -1]
                    )
                    (case_arm
                      pat_list: [{<--no-verbose>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:preserve_args)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$preserve_args') <' '> 
                                    ($ Id.VSub_DollarName '$opt')
                                  )
                                }
                              spids: [4886]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:opt_verbose)
                              op: assign_op.Equal
                              rhs: {<false>}
                              spids: [4894]
                            )
                          ]
                        )
                      ]
                      spids: [4883 4884 4898 -1]
                    )
                    (case_arm
                      pat_list: [{<--tag>}]
                      action: [
                        (command.AndOr
                          ops: [Id.Op_DAmp Id.Op_DAmp]
                          children: [
                            (C {<test>} {(DQ ($ Id.VSub_Pound '$#'))} {<-eq>} {<0>})
                            (C {<func_missing_arg>} {(DQ ($ Id.VSub_DollarName '$opt'))})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:preserve_args)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$preserve_args') <' '> 
                                    ($ Id.VSub_DollarName '$opt') <' '> ($ Id.VSub_Number '$1')
                                  )
                                }
                              spids: [4928]
                            )
                          ]
                        )
                        (C {<func_enable_tag>} {(DQ ($ Id.VSub_Number '$1'))})
                        (C {<shift>})
                      ]
                      spids: [4902 4903 4951 -1]
                    )
                    (case_arm
                      pat_list: [
                        {<-dlopen> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}
                        {<--mode> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}
                        {<--tag> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}
                      ]
                      action: [
                        (C {<func_opt_split>} {(DQ ($ Id.VSub_DollarName '$opt'))})
                        (C {<set>} {<dummy>} {(DQ ($ Id.VSub_DollarName '$func_opt_split_opt'))} 
                          {(DQ ($ Id.VSub_DollarName '$func_opt_split_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: [4959 4970 5004 -1]
                    )
                    (case_arm
                      pat_list: [
                        {<-> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'>)}
                        {<-h>}
                      ]
                      action: [(C {<func_usage>})]
                      spids: [5008 5012 5016 -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: [5022]
                            )
                          ]
                        )
                      ]
                      spids: [5019 5020 5025 -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: [5031]
                            )
                          ]
                        )
                      ]
                      spids: [5028 5029 5036 -1]
                    )
                    (case_arm
                      pat_list: [{<--version>}]
                      action: [(C {<func_version>})]
                      spids: [5039 5040 5044 -1]
                    )
                    (case_arm
                      pat_list: [{<-> <Id.Lit_Star '*'>}]
                      action: [
                        (C {<func_fatal_help>} 
                          {
                            (DQ <'unrecognized option '> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\`'>
                              ) ($ Id.VSub_DollarName '$opt') <'\''>
                            )
                          }
                        )
                      ]
                      spids: [5048 5050 5061 -1]
                    )
                    (case_arm
                      pat_list: [{<Id.Lit_Star '*'>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:nonopt)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_DollarName '$opt'))}
                              spids: [5068]
                            )
                          ]
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Break break>
                        )
                      ]
                      spids: [5065 5066 5077 -1]
                    )
                  ]
                )
              ]
            )
        )
        (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 '*'>}
              ]
              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: [5130]
                    )
                  ]
                )
              ]
              spids: [5095 5123 5134 -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_duplicate_deps')}
                      spids: [5141]
                    )
                  ]
                )
              ]
              spids: [5137 5138 5145 -1]
            )
          ]
        )
        (C {($ Id.VSub_DollarName '$exit_cmd')} {($ Id.VSub_DollarName '$EXIT_FAILURE')})
      ]
    )
    (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: 5261
                                              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: [5222 5233]
                                )
                              ]
                              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: 5295
                                          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: [5203 5219]
                        )
                      ]
                      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: 5334
                                  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: [5184 5200]
                )
              ]
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {($ Id.VSub_DollarName '$opt_help')})
        (BraceGroup
          children: [
            (C {<func_check_version_match>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {(DQ ($ Id.VSub_DollarName '$build_libtool_libs'))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<yes>}
                                )
                                (C {<test>} {(DQ ($ Id.VSub_DollarName '$build_old_libs'))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<yes>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<func_fatal_configuration>} 
                      {(DQ <'not configured to build any kind of library'>)}
                    )
                  ]
                  spids: [5376 5403]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$mode'))})
                (C {<func_fatal_error>} {(DQ <'error: you must specify a MODE.'>)})
              ]
            )
            (C {<eval>} 
              {
                (DQ <'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 '$execute_dlfiles'))})
                                (C {<test>} {(DQ ($ Id.VSub_DollarName '$mode'))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<execute>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<func_error>} 
                      {
                        (DQ <'unrecognized option '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\`'>
                          ) <'-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: [5456 5480]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:generic_help)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$help'))}
                  spids: [5515]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:help)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'Try '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                        ($ Id.VSub_DollarName '$progname') <' --help --mode='> ($ Id.VSub_DollarName '$mode') <'\' for more information.'>
                      )
                    }
                  spids: [5521]
                )
              ]
            )
          ]
        )
      ]
    )
    (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
                    )
                    (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
                    )
                  ]
                  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: [5629]
                )
              ]
            )
            (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: {(DQ ($ 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: [5713]
                                            )
                                          ]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [5701 5711 5718 -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: [5633 5666]
                )
              ]
            )
            (C {<test>} {(DQ ($ Id.VSub_DollarName '$lalib_p'))} {<Id.Lit_Equals '='>} {<yes>})
          ]
        )
    )
    (command.ShFunction
      name: func_ltwrapper_script_p
      body: (BraceGroup children:[(C {<func_lalib_p>} {(DQ ($ Id.VSub_Number '$1'))})])
    )
    (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: [5801]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <.exe>}]
                  spids: [5811 5813 5815 -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: [5821]
                        )
                      ]
                    )
                  ]
                  spids: [5818 5819 5824 -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: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:func_ltwrapper_scriptname_result)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [5870]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<func_ltwrapper_executable_p>} {(DQ ($ Id.VSub_Number '$1'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (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: 
                            {
                              (DQ ($ Id.VSub_DollarName '$func_dirname_result') <'/'> 
                                ($ Id.VSub_DollarName '$objdir') <'/'> (${ Id.VSub_Name func_stripname_result) <_ltshwrapper>
                              )
                            }
                          spids: [5915]
                        )
                      ]
                    )
                  ]
                  spids: [5875 5884]
                )
              ]
            )
          ]
        )
    )
    (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 '$opt_debug')})
            (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: [5994]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {(SQ <'~'>)}
                  spids: [5998]
                )
              ]
            )
            (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 '$save_ifs')}
                          spids: [6016]
                        )
                      ]
                    )
                    (C {<eval>} 
                      {
                        (DQ <'cmd='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                          ($ Id.VSub_DollarName '$cmd') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                        )
                      }
                    )
                    (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: [6048]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_source
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$opt_debug')})
            (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: [6091 6100 6108 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<.>} {(DQ <'./'> ($ Id.VSub_Number '$1'))})]
                  spids: [6111 6112 6121 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_infer_tag
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$opt_debug')})
            (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: [6183]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: arg
                      iter_words: [{($ Id.VSub_DollarName '$CC')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<func_quote_for_eval>} {(DQ ($ Id.VSub_DollarName '$arg'))})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:CC_quoted)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$CC_quoted') <' '> 
                                        ($ Id.VSub_DollarName '$func_quote_for_eval_result')
                                      )
                                    }
                                  spids: [6205]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (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: [6216]
                        )
                      ]
                    )
                    (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: [6226]
                        )
                      ]
                    )
                    (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: [6251 6317 6319 -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_Name 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: [6407]
                                                )
                                              ]
                                            )
                                            (command.ForEach
                                              iter_name: arg
                                              iter_words: [{($ Id.VSub_DollarName '$CC')}]
                                              do_arg_iter: F
                                              body: 
                                                (command.DoGroup
                                                  children: [
                                                    (C {<func_quote_for_eval>} 
                                                      {(DQ ($ Id.VSub_DollarName '$arg'))}
                                                    )
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (sh_lhs_expr.Name name:CC_quoted)
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (DQ ($ Id.VSub_DollarName '$CC_quoted') 
                                                                <' '> ($ Id.VSub_DollarName '$func_quote_for_eval_result')
                                                              )
                                                            }
                                                          spids: [6433]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                )
                                            )
                                            (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: [6444]
                                                )
                                              ]
                                            )
                                            (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: [6454]
                                                )
                                              ]
                                            )
                                            (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: [6555]
                                                        )
                                                      ]
                                                    )
                                                    (command.ControlFlow
                                                      token: <Id.ControlFlow_Break break>
                                                    )
                                                  ]
                                                  spids: [6474 6540 6562 -1]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [6346 6367]
                                        )
                                      ]
                                    )
                                  ]
                                )
                            )
                            (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 '> 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\`'>
                                          ) <'--tag\''>
                                        )
                                      }
                                    )
                                  ]
                                  spids: [6586 6597]
                                )
                              ]
                            )
                          ]
                          spids: [6330 6331 6625 -1]
                        )
                      ]
                    )
                  ]
                  spids: [6159 6180]
                )
              ]
            )
          ]
        )
    )
    (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: [6655]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$build_libtool_libs'))} 
                              {<Id.Lit_Equals '='>} {<yes>}
                            )
                          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: [6677]
                        )
                      ]
                    )
                  ]
                  spids: [6661 6674]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:write_lobj)
                      op: assign_op.Equal
                      rhs: {<none>}
                      spids: [6688]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$build_old_libs'))} 
                              {<Id.Lit_Equals '='>} {<yes>}
                            )
                          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: [6712]
                        )
                      ]
                    )
                  ]
                  spids: [6696 6709]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:write_oldobj)
                      op: assign_op.Equal
                      rhs: {<none>}
                      spids: [6723]
                    )
                  ]
                )
              ]
            )
            (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: 6775
                              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 '$TIMESTAMP')
                                <') '>
                                ($ 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_Name write_libobj))}
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_mode_compile
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$opt_debug')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:base_compile)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [6816]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:srcfile)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$nonopt'))}
                  spids: [6819]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:suppress_opt)
                  op: assign_op.Equal
                  rhs: {<yes>}
                  spids: [6828]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:suppress_output)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [6832]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:arg_mode)
                  op: assign_op.Equal
                  rhs: {<normal>}
                  spids: [6835]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:libobj)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [6839]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:later)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [6842]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pie_flag)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [6845]
                )
              ]
            )
            (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: {(DQ ($ Id.VSub_DollarName '$arg'))}
                                  spids: [6873]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:arg_mode)
                                  op: assign_op.Equal
                                  rhs: {<normal>}
                                  spids: [6879]
                                )
                              ]
                            )
                          ]
                          spids: [6864 6866 6883 -1]
                        )
                        (case_arm
                          pat_list: [{<target>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:libobj)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$arg'))}
                                  spids: [6892]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:arg_mode)
                                  op: assign_op.Equal
                                  rhs: {<normal>}
                                  spids: [6898]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [6887 6889 6905 -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 '> 
                                              (word_part.EscapedLiteral
                                                token: <Id.Lit_EscapedChar '\\`'>
                                              ) <'-o\' more than once'>
                                            )
                                          }
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:arg_mode)
                                          op: assign_op.Equal
                                          rhs: {<target>}
                                          spids: [6950]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [6925 6926 6957 -1]
                                )
                                (case_arm
                                  pat_list: [{<-pie>} {<-fpie>} {<-fPIE>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:pie_flag)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$pie_flag') <' '> 
                                                ($ Id.VSub_DollarName '$arg')
                                              )
                                            }
                                          spids: [6973]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [6961 6970 6984 -1]
                                )
                                (case_arm
                                  pat_list: [{<-shared>} {<-static>} {<-prefer-pic>} {<-prefer-non-pic>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:later)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$later') <' '> 
                                                ($ Id.VSub_DollarName '$arg')
                                              )
                                            }
                                          spids: [7004]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [6988 7001 7015 -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: [7023]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [7019 7020 7030 -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: [7038]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [7034 7035 7051 -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: [7078]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:lastarg)
                                          op: assign_op.Equal
                                          rhs: (word.Empty)
                                          spids: [7082]
                                        )
                                      ]
                                    )
                                    (command.Sentence
                                      child: 
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:save_ifs)
                                              op: assign_op.Equal
                                              rhs: {(DQ ($ Id.VSub_DollarName '$IFS'))}
                                              spids: [7085]
                                            )
                                          ]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:IFS)
                                          op: assign_op.Equal
                                          rhs: {(SQ <','>)}
                                          spids: [7091]
                                        )
                                      ]
                                    )
                                    (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: {(DQ ($ Id.VSub_DollarName '$save_ifs'))}
                                                  spids: [7109]
                                                )
                                              ]
                                            )
                                            (C {<func_quote_for_eval>} 
                                              {(DQ ($ Id.VSub_DollarName '$arg'))}
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:lastarg)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ ($ Id.VSub_DollarName '$lastarg') <' '> 
                                                        ($ Id.VSub_DollarName 
'$func_quote_for_eval_result'
                                                        )
                                                      )
                                                    }
                                                  spids: [7122]
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:IFS)
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName '$save_ifs'))}
                                          spids: [7133]
                                        )
                                      ]
                                    )
                                    (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: [7153]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:base_compile)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$base_compile') <' '> 
                                                ($ Id.VSub_DollarName '$lastarg')
                                              )
                                            }
                                          spids: [7162]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [7058 7061 7173 -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: {(DQ ($ Id.VSub_DollarName '$srcfile'))}
                                          spids: [7193]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:srcfile)
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName '$arg'))}
                                          spids: [7199]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [7177 7178 7205 -1]
                                )
                              ]
                            )
                          ]
                          spids: [6909 6911 7214 -1]
                        )
                      ]
                    )
                    (C {<func_quote_for_eval>} {(DQ ($ Id.VSub_DollarName '$lastarg'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:base_compile)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$base_compile') <' '> 
                                ($ Id.VSub_DollarName '$func_quote_for_eval_result')
                              )
                            }
                          spids: [7235]
                        )
                      ]
                    )
                  ]
                )
            )
            (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: [7257 7258 7268 -1]
                )
                (case_arm
                  pat_list: [{<target>}]
                  action: [
                    (C {<func_fatal_error>} 
                      {
                        (DQ <'you must specify a target with '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\`'>
                          ) <'-o\''>
                        )
                      }
                    )
                  ]
                  spids: [7271 7272 7284 -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: {(DQ ($ Id.VSub_DollarName '$func_basename_result'))}
                                  spids: [7315]
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [7287 7288 7324 -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 '*'> <.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: [7461]
                        )
                      ]
                    )
                  ]
                  spids: [7346 7451 7465 -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: [7490]
                        )
                      ]
                    )
                  ]
                  spids: [7479 7481 7493 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<func_fatal_error>} 
                      {
                        (DQ <'cannot determine name of library object from '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\`'>
                          ) ($ Id.VSub_DollarName '$libobj') <'\''>
                        )
                      }
                    )
                  ]
                  spids: [7496 7497 7510 -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_DAmp]
                              children: [
                                (C {<test>} {(DQ ($ Id.VSub_DollarName '$build_libtool_libs'))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<yes>}
                                )
                                (C {<func_fatal_configuration>} 
                                  {(DQ <'can not 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: [7568]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [7542 7543 7575 -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: [7583]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:build_old_libs)
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                  spids: [7587]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [7579 7580 7594 -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: [7602]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [7598 7599 7609 -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: [7617]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [7613 7614 7624 -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 '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                      ($ 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: {(DQ ($ Id.VSub_DollarName '$func_basename_result'))}
                  spids: [7709]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:xdir)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$func_dirname_result'))}
                  spids: [7715]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:lobj)
                  op: assign_op.Equal
                  rhs: 
                    {(${ Id.VSub_Name xdir) ($ Id.VSub_DollarName '$objdir') <'/'> 
                      ($ Id.VSub_DollarName '$objname')
                    }
                  spids: [7721]
                )
              ]
            )
            (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>} {(DQ ($ Id.VSub_DollarName '$build_old_libs'))} 
                              {<Id.Lit_Equals '='>} {<yes>}
                            )
                          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: [7771]
                        )
                      ]
                    )
                  ]
                  spids: [7755 7768]
                )
              ]
              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: [7789]
                    )
                  ]
                )
              ]
            )
            (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: [7842]
                        )
                      ]
                    )
                  ]
                  spids: [7817 7839 7846 -1]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {(DQ ($ Id.VSub_DollarName '$pic_mode'))} 
                                  {<Id.Lit_Equals '='>} {<no>}
                                )
                                (C {<test>} {(DQ ($ Id.VSub_DollarName '$deplibs_check_method'))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<pass_all>}
                                )
                              ]
                            )
                          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: [7885]
                        )
                      ]
                    )
                  ]
                  spids: [7852 7878]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$compiler_c_o'))} 
                              {<Id.Lit_Equals '='>} {<no>}
                            )
                          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_Name objext)
                            }
                          spids: [7917]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:lockfile)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$output_obj') <.lock>)}
                          spids: [7943]
                        )
                      ]
                    )
                  ]
                  spids: [7901 7914]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:output_obj)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [7953]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:need_locks)
                      op: assign_op.Equal
                      rhs: {<no>}
                      spids: [7956]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:lockfile)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [7960]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$need_locks'))} 
                              {<Id.Lit_Equals '='>} {<yes>}
                            )
                          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: [7975 7988]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$need_locks'))} 
                              {<Id.Lit_Equals '='>} {<warn>}
                            )
                          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 '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                                  <'-c\' and '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <'-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: [8047 8058]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:removelist)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$removelist') <' '> 
                                ($ Id.VSub_DollarName '$output_obj')
                              )
                            }
                          spids: [8111]
                        )
                      ]
                    )
                    (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: [8031 8044]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                (C {($ Id.VSub_DollarName '$RM')} {($ Id.VSub_DollarName '$removelist')})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:removelist)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$removelist') <' '> ($ Id.VSub_DollarName '$lockfile'))
                    }
                  spids: [8145]
                )
              ]
            )
            (C {<trap>} {(SQ <'$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'>)} {<1>} {<2>} {<15>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$fix_srcfile_path'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<eval>} 
                      {
                        (DQ <'srcfile='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                          ($ Id.VSub_DollarName '$fix_srcfile_path') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                        )
                      }
                    )
                  ]
                  spids: [8167 8178]
                )
              ]
            )
            (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: [8201]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$build_libtool_libs'))} 
                              {<Id.Lit_Equals '='>} {<yes>}
                            )
                          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: [8230]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {(DQ ($ Id.VSub_DollarName '$pic_mode'))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<no>}
                                    )
                                  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: [8252]
                                )
                              ]
                            )
                          ]
                          spids: [8235 8249]
                        )
                      ]
                      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: [8269]
                            )
                          ]
                        )
                      ]
                    )
                    (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: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:command)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$command') <' -o '> 
                                        ($ Id.VSub_DollarName '$lobj')
                                      )
                                    }
                                  spids: [8308]
                                )
                              ]
                            )
                          ]
                          spids: [8290 8301]
                        )
                      ]
                    )
                    (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>} {(DQ ($ Id.VSub_DollarName '$need_locks'))} 
                                          {<Id.Lit_Equals '='>} {<warn>}
                                        )
                                        (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 '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <'-c\' and '> 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\`'>
                                  ) <'-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: [8334 8374]
                        )
                      ]
                    )
                    (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: [8436 8464]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {(DQ ($ Id.VSub_DollarName '$suppress_opt'))} 
                                      {<Id.Lit_Equals '='>} {<yes>}
                                    )
                                  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: [8504]
                                )
                              ]
                            )
                          ]
                          spids: [8488 8501]
                        )
                      ]
                    )
                  ]
                  spids: [8210 8223]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$build_old_libs'))} 
                              {<Id.Lit_Equals '='>} {<yes>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {(DQ ($ Id.VSub_DollarName '$pic_mode'))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<yes>}
                                    )
                                  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: [8558]
                                )
                              ]
                            )
                          ]
                          spids: [8537 8551]
                        )
                      ]
                      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: [8570]
                            )
                          ]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {(DQ ($ Id.VSub_DollarName '$compiler_c_o'))} 
                                      {<Id.Lit_Equals '='>} {<yes>}
                                    )
                                  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 '$command') <' -o '> 
                                        ($ Id.VSub_DollarName '$obj')
                                      )
                                    }
                                  spids: [8599]
                                )
                              ]
                            )
                          ]
                          spids: [8583 8596]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:command)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$command') 
                                ($ Id.VSub_DollarName '$suppress_output')
                              )
                            }
                          spids: [8615]
                        )
                      ]
                    )
                    (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>} {(DQ ($ Id.VSub_DollarName '$need_locks'))} 
                                          {<Id.Lit_Equals '='>} {<warn>}
                                        )
                                        (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 '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <'-c\' and '> 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\`'>
                                  ) <'-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: [8636 8676]
                        )
                      ]
                    )
                    (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: [8738 8766]
                        )
                      ]
                    )
                  ]
                  spids: [8521 8534]
                )
              ]
            )
            (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>} {(DQ ($ Id.VSub_DollarName '$need_locks'))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<no>}
                                    )
                                  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: [8835]
                                )
                              ]
                            )
                            (C {($ Id.VSub_DollarName '$RM')} {(DQ ($ Id.VSub_DollarName '$lockfile'))})
                          ]
                          spids: [8818 8832]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (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>} {(DQ ($ Id.VSub_DollarName '$mode'))} {<Id.Lit_Equals '='>} {<compile>})
                (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 '$mode')}
              arms: [
                (case_arm
                  pat_list: [{(DQ )}]
                  action: [(C {<func_help>})]
                  spids: [8911 8913 8927 -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 '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                          <'/bin/rm\').  RM-OPTIONS are options (such as '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <'-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: [8931 8932 8958 -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 building PIC objects only\n'> 
                          <'  -prefer-non-pic   try to building non-PIC objects only\n'> <'  -shared           do not build a '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                          <'.o\' file suitable for static linking\n'> <'  -static           only build a '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                          <'.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 '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <'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 '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <'.c\' with the\n'> 
                          <'library object suffix, '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <'.lo\'.'>
                        )
                      }
                    )
                  ]
                  spids: [8962 8963 9005 -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 '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <'-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: [9009 9010 9040 -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 '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\`'>
                          ) <'--dry-run\' option if you just want to see what would be executed.'>
                        )
                      }
                    )
                  ]
                  spids: [9044 9045 9067 -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 '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <'install\' or '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\`'>
                          ) <'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: [9071 9072 9101 -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      '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                          <'-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'
                          > <'  -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 '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\`'>
                          ) <'-\') are ignored.\n'> <'\n'> <'Every other argument is treated as a filename.  Files ending in '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\`'>
                          ) <'.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 '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                          <'.la\', then a libtool library is created,\n'> <'only library objects ('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                          <'.lo\' files) may be specified, and '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <'-rpath\' is\n'> 
                          <'required, except when creating a convenience library.\n'> <'\n'> <'If OUTPUT-FILE ends in '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                          <'.a\' or '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                          <'.lib\', then a standard library is created\n'> <'using '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <'ar\' and '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\`'>
                          ) <'ranlib\', or on Windows using '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                          <'lib\'.\n'> <'\n'> <'If OUTPUT-FILE ends in '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                          <'.lo\' or '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <.> (${ Id.VSub_Name objext) 
                          <'\', then a reloadable object file\n'> <'is created, otherwise an executable program is created.'>
                        )
                      }
                    )
                  ]
                  spids: [9105 9106 9211 -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 '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                          <'/bin/rm\').  RM-OPTIONS are options (such as '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <'-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: [9215 9216 9242 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<func_fatal_help>} 
                      {
                        (DQ <'invalid operation mode '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\`'>
                          ) ($ Id.VSub_DollarName '$mode') <'\''>
                        )
                      }
                    )
                  ]
                  spids: [9246 9247 9260 -1]
                )
              ]
            )
            (C {<echo>})
            (C {($ Id.VSub_DollarName '$ECHO')} 
              {
                (DQ <'Try '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                  ($ 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>} {(DQ ($ Id.VSub_DollarName '$opt_help'))} {<Id.Lit_Equals '='>} 
                              {<Id.Lit_Colon ':'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<func_mode_help>})]
                  spids: [9293 9306]
                )
              ]
              else_action: [
                (command.Pipeline
                  children: [
                    (BraceGroup
                      children: [
                        (C {<func_help>} {<noexit>})
                        (command.ForEach
                          iter_name: mode
                          iter_words: [
                            {<compile>}
                            {<link>}
                            {<execute>}
                            {<install>}
                            {<finish>}
                            {<uninstall>}
                            {<clean>}
                          ]
                          do_arg_iter: F
                          body: (command.DoGroup children:[(C {<func_mode_help>})])
                        )
                      ]
                    )
                    (C {<sed>} {<-n>} {(SQ <'1p; 2,$s/^Usage:/  or: /p'>)})
                  ]
                  negated: F
                )
                (command.Pipeline
                  children: [
                    (BraceGroup
                      children: [
                        (C {<func_help>} {<noexit>})
                        (command.ForEach
                          iter_name: 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 {<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: [9285 9290]
        )
      ]
    )
    (command.ShFunction
      name: func_mode_execute
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$opt_debug')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cmd)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$nonopt'))}
                  spids: [9456]
                )
              ]
            )
            (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 '$execute_dlfiles')}]
              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 (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                              ($ 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: [9520]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$file')}
                      arms: [
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'> <.la>}]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<func_lalib_unsafe_p>} {(DQ ($ Id.VSub_DollarName '$file'))})
                                (C {<func_fatal_help>} 
                                  {
                                    (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                                      ($ 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: [9563]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:library_names)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [9566]
                                )
                              ]
                            )
                            (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 
                                              (word_part.EscapedLiteral
                                                token: <Id.Lit_EscapedChar '\\`'>
                                              ) ($ Id.VSub_DollarName '$file') <'\' was not linked with '> 
                                              (word_part.EscapedLiteral
                                                token: <Id.Lit_EscapedChar '\\`'>
                                              ) <'-export-dynamic\''>
                                            )
                                          }
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [9581 9592]
                                )
                              ]
                            )
                            (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: {(DQ ($ Id.VSub_DollarName '$func_dirname_result'))}
                                  spids: [9643]
                                )
                              ]
                            )
                            (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: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:dir)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$dir') <'/'> 
                                                ($ Id.VSub_DollarName '$objdir')
                                              )
                                            }
                                          spids: [9668]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [9650 9665]
                                )
                              ]
                              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 '> 
                                              (word_part.EscapedLiteral
                                                token: <Id.Lit_EscapedChar '\\`'>
                                              ) ($ Id.VSub_DollarName '$dlname') <'\' in '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                                              ($ Id.VSub_DollarName '$dir') <'\' or '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) ($ Id.VSub_DollarName '$dir') 
                                              <'/'> ($ Id.VSub_DollarName '$objdir') <'\''>
                                            )
                                          }
                                        )
                                      ]
                                      spids: [9679 9694]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [9530 9532 9721 -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: {(DQ ($ Id.VSub_DollarName '$func_dirname_result'))}
                                  spids: [9748]
                                )
                              ]
                            )
                          ]
                          spids: [9725 9727 9754 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (C {<func_warning>} 
                              {
                                (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                                  <'-dlopen\' is ignored for non-libtool libraries and objects'>
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [9758 9759 9773 -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: [9784]
                        )
                      ]
                    )
                    (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: {(DQ ($ Id.VSub_DollarName '$absdir'))}
                              spids: [9810]
                            )
                          ]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<eval>} {<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>} 
                              {($ Id.VSub_DollarName '$shlibpath_var') <Id.Lit_Equals '='> 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                ) <dir>
                              }
                            )
                          ]
                          spids: [9821 9835]
                        )
                      ]
                      else_action: [
                        (C {<eval>} 
                          {($ Id.VSub_DollarName '$shlibpath_var') <Id.Lit_Equals '='> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\$'>
                            ) <dir> <Id.Lit_Colon ':'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                            ($ Id.VSub_DollarName '$shlibpath_var')
                          }
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:libtool_execute_magic)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$magic'))}
                  spids: [9875]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:args)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [9886]
                )
              ]
            )
            (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: [9904 9917 9919 -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: 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$progdir') <'/'> 
                                                ($ Id.VSub_DollarName '$program')
                                              )
                                            }
                                          spids: [9953]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [9930 9939]
                                )
                                (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: 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$progdir') <'/'> 
                                                ($ Id.VSub_DollarName '$program')
                                              )
                                            }
                                          spids: [9991]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [9961 9970]
                                )
                              ]
                            )
                          ]
                          spids: [9922 9923 10002 -1]
                        )
                      ]
                    )
                    (C {<func_quote_for_eval>} {(DQ ($ Id.VSub_DollarName '$file'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:args)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$args') <' '> 
                                ($ Id.VSub_DollarName '$func_quote_for_eval_result')
                              )
                            }
                          spids: [10019]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ <X> ($ Id.VSub_DollarName '$opt_dry_run'))} 
                              {<Id.Lit_Equals '='>} {<Xfalse>}
                            )
                          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 <'export '> ($ Id.VSub_DollarName '$shlibpath_var'))})
                          ]
                          spids: [10048 10059]
                        )
                      ]
                    )
                    (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: 
                            {
                              (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <cmd> 
                                ($ Id.VSub_DollarName '$args')
                              )
                            }
                          spids: [10142]
                        )
                      ]
                    )
                  ]
                  spids: [10031 10045]
                )
              ]
              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 (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: [10157 10168]
                    )
                  ]
                )
                (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')}
                )
              ]
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {(DQ ($ Id.VSub_DollarName '$mode'))} {<Id.Lit_Equals '='>} {<execute>})
        (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 '$opt_debug')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:libdirs)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$nonopt'))}
                  spids: [10252]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:admincmds)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [10258]
                )
              ]
            )
            (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: dir
                      do_arg_iter: T
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:libdirs)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$libdirs') <' '> 
                                        ($ Id.VSub_DollarName '$dir')
                                      )
                                    }
                                  spids: [10295]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (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: [10319 10330]
                                )
                              ]
                            )
                            (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'))})
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:admincmds)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName '$admincmds') <'\n'> 
                                                    <'       '> ($ Id.VSub_DollarName '$cmds')
                                                  )
                                                }
                                              spids: [10395]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [10357 10368]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [10262 10284]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {($ Id.VSub_DollarName '$opt_silent')})
                (command.ControlFlow
                  token: <Id.ControlFlow_Exit exit>
                  arg_word: {($ Id.VSub_DollarName '$EXIT_SUCCESS')}
                )
              ]
            )
            (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 '> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <'-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 '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\`'>
                          ) ($ Id.VSub_DollarName '$shlibpath_var') <'\' environment variable'>
                        )
                      }
                    )
                    (C {<echo>} {(DQ <'     during execution'>)})
                  ]
                  spids: [10498 10509]
                )
              ]
            )
            (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 '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\`'>
                          ) ($ Id.VSub_DollarName '$runpath_var') <'\' environment variable'>
                        )
                      }
                    )
                    (C {<echo>} {(DQ <'     during linking'>)})
                  ]
                  spids: [10532 10543]
                )
              ]
            )
            (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: [10580]
                        )
                      ]
                    )
                    (C {<eval>} 
                      {
                        (DQ <'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 '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\`'>
                          ) ($ Id.VSub_DollarName '$flag') <'\' linker flag'>
                        )
                      }
                    )
                  ]
                  spids: [10566 10577]
                )
              ]
            )
            (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: [10608 10619]
                )
              ]
            )
            (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 '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\`'>
                          ) <'/etc/ld.so.conf\''>
                        )
                      }
                    )
                  ]
                  spids: [10633 10642]
                )
              ]
            )
            (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: [10675 10684 10701 -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: [10704 10705 10715 -1]
                )
              ]
            )
            (C {<echo>} {(DQ <---------------------------------------------------------------------->)})
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_DollarName '$EXIT_SUCCESS')}
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {(DQ ($ Id.VSub_DollarName '$mode'))} {<Id.Lit_Equals '='>} {<finish>})
        (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 '$opt_debug')})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DPipe Id.Op_DPipe]
                              children: [
                                (C {<test>} {(DQ ($ Id.VSub_DollarName '$nonopt'))} 
                                  {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$SHELL'))}
                                )
                                (C {<test>} {(DQ ($ Id.VSub_DollarName '$nonopt'))} 
                                  {<Id.Lit_Equals '='>} {<'/bin/sh'>}
                                )
                                (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: [10820 10823 10826 -1]
                                    )
                                    (case_arm
                                      pat_list: [{<Id.Lit_Star '*'>}]
                                      action: [(C {<false>})]
                                      spids: [10828 10829 10832 -1]
                                    )
                                  ]
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  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: [10851]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:arg)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [10858]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                  spids: [10781 10837]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:install_prog)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [10868]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:arg)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$nonopt')}
                      spids: [10871]
                    )
                  ]
                )
              ]
            )
            (C {<func_quote_for_eval>} {(DQ ($ Id.VSub_DollarName '$arg'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:install_prog)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$install_prog') 
                        ($ Id.VSub_DollarName '$func_quote_for_eval_result')
                      )
                    }
                  spids: [10894]
                )
              ]
            )
            (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: [10901]
                )
              ]
            )
            (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: [10927]
                        )
                      ]
                    )
                  ]
                  spids: [10916 10925 10930 -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: [10936]
                        )
                      ]
                    )
                  ]
                  spids: [10933 10934 10939 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:dest)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [10950]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:files)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [10953]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:opts)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [10956]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:prev)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [10959]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:install_type)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [10962]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:isdir)
                  op: assign_op.Equal
                  rhs: {<no>}
                  spids: [10965]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:stripme)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [10969]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:no_mode)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_Colon ':'>}
                  spids: [10972]
                )
              ]
            )
            (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: [10984]
                        )
                      ]
                    )
                    (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: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:files)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$files') <' '> 
                                        ($ Id.VSub_DollarName '$dest')
                                      )
                                    }
                                  spids: [11001]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:dest)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$arg')}
                                  spids: [11009]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [10987 10998]
                        )
                      ]
                    )
                    (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: {<yes>}
                                  spids: [11030]
                                )
                              ]
                            )
                          ]
                          spids: [11027 11028 11033 -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: [11040 11045]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:prev)
                                      op: assign_op.Equal
                                      rhs: {($ Id.VSub_DollarName '$arg')}
                                      spids: [11053]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [11036 11037 11060 -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: [11075]
                                )
                              ]
                            )
                          ]
                          spids: [11063 11072 11079 -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: [11086]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [11082 11083 11095 -1]
                        )
                        (case_arm
                          pat_list: [{<-> <Id.Lit_Star '*'>}]
                          spids: [11098 11100 11103 -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>} 
                                                          {(DQ <x> ($ Id.VSub_DollarName '$prev'))} {<Id.Lit_Equals '='>} {<x-m>}
                                                        )
                                                        (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: [11155]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:no_mode)
                                                  op: assign_op.Equal
                                                  rhs: {<false>}
                                                  spids: [11159]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [11128 11152]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:prev)
                                          op: assign_op.Equal
                                          rhs: (word.Empty)
                                          spids: [11166]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [11114 11125]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:dest)
                                      op: assign_op.Equal
                                      rhs: {($ Id.VSub_DollarName '$arg')}
                                      spids: [11172]
                                    )
                                  ]
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Continue continue>
                                )
                              ]
                            )
                          ]
                          spids: [11106 11107 11182 -1]
                        )
                      ]
                    )
                    (C {<func_quote_for_eval>} {(DQ ($ Id.VSub_DollarName '$arg'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:install_prog)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$install_prog') <' '> 
                                ($ Id.VSub_DollarName '$func_quote_for_eval_result')
                              )
                            }
                          spids: [11200]
                        )
                      ]
                    )
                    (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: [11208 11219]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:install_shared_prog)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$install_shared_prog') <' '> 
                                ($ Id.VSub_DollarName '$func_quote_for_eval_result')
                              )
                            }
                          spids: [11232]
                        )
                      ]
                    )
                  ]
                )
            )
            (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 '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                      ($ 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: [11305 11310]
                        )
                      ]
                      else_action: [
                        (C {<func_quote_for_eval>} 
                          {(DQ ($ Id.VSub_DollarName '$install_override_mode'))}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:install_shared_prog)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$install_shared_prog') <' -m '> 
                                    ($ Id.VSub_DollarName '$func_quote_for_eval_result')
                                  )
                                }
                              spids: [11325]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [11287 11302]
                )
              ]
            )
            (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: [11354 11365]
                        )
                      ]
                      else_action: [(C {<func_fatal_help>} {(DQ <'you must specify a destination'>)})]
                    )
                  ]
                  spids: [11340 11351]
                )
              ]
            )
            (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: [11410]
                )
              ]
            )
            (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: {<yes>}
                      spids: [11429]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$isdir'))} {<Id.Lit_Equals '='>} 
                              {<yes>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:destdir)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$dest'))}
                          spids: [11449]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:destname)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [11455]
                        )
                      ]
                    )
                  ]
                  spids: [11433 11446]
                )
              ]
              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: {(DQ ($ Id.VSub_DollarName '$func_dirname_result'))}
                      spids: [11475]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:destname)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_DollarName '$func_basename_result'))}
                      spids: [11481]
                    )
                  ]
                )
                (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 (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                          ($ 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: [11535 11552 11554 -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: [11580 11582 11584 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [
                                    (C {<func_fatal_help>} 
                                      {
                                        (DQ 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\`'>
                                          ) ($ Id.VSub_DollarName '$destdir') <'\' must be an absolute directory name'>
                                        )
                                      }
                                    )
                                  ]
                                  spids: [11587 11588 11600 -1]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [11557 11558 11609 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:libtool_install_magic)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$magic'))}
                  spids: [11624]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:staticlibs)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [11631]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:future_libdirs)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [11634]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:current_libdirs)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [11637]
                )
              ]
            )
            (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: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:staticlibs)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$staticlibs') <' '> 
                                        ($ Id.VSub_DollarName '$file')
                                      )
                                    }
                                  spids: [11674]
                                )
                              ]
                            )
                          ]
                          spids: [11664 11667 11682 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'> <.la>}]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<func_lalib_unsafe_p>} {(DQ ($ Id.VSub_DollarName '$file'))})
                                (C {<func_fatal_help>} 
                                  {
                                    (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) 
                                      ($ 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: [11715]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:old_library)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [11718]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:relink_command)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [11721]
                                )
                              ]
                            )
                            (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: [11766 11773 11775 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<Id.Lit_Star '*'>}]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:current_libdirs)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ ($ Id.VSub_DollarName '$current_libdirs') 
                                                        <' '> ($ Id.VSub_DollarName '$libdir')
                                                      )
                                                    }
                                                  spids: [11781]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [11778 11779 11788 -1]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [11736 11753]
                                )
                              ]
                              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: [11811 11818 11820 -1]
                                    )
                                    (case_arm
                                      pat_list: [{<Id.Lit_Star '*'>}]
                                      action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:future_libdirs)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName '$future_libdirs') <' '> 
                                                    ($ Id.VSub_DollarName '$libdir')
                                                  )
                                                }
                                              spids: [11826]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [11823 11824 11833 -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: {(DQ ($ Id.VSub_DollarName '$func_dirname_result'))}
                                  spids: [11857]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:dir)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$dir') 
                                        ($ Id.VSub_DollarName '$objdir')
                                      )
                                    }
                                  spids: [11863]
                                )
                              ]
                            )
                            (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: [11889]
                                        )
                                      ]
                                    )
                                    (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 '> 
                                              (word_part.EscapedLiteral
                                                token: <Id.Lit_EscapedChar '\\`'>
                                              ) ($ 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: [11987]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [11969 11980]
                                        )
                                      ]
                                      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: [12012]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (C {<func_warning>} 
                                      {
                                        (DQ <'relinking '> 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\`'>
                                          ) ($ Id.VSub_DollarName '$file') <'\''>
                                        )
                                      }
                                    )
                                    (C {<func_show_eval>} 
                                      {(DQ ($ Id.VSub_DollarName '$relink_command'))} 
                                      {(SQ <'func_fatal_error "error: relink \\`$file'>) 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\\''>
                                        ) (SQ <' with the above command before installing it"'>)
                                      }
                                    )
                                  ]
                                  spids: [11871 11882]
                                )
                              ]
                            )
                            (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: {(DQ ($ Id.VSub_Number '$1'))}
                                          spids: [12095]
                                        )
                                      ]
                                    )
                                    (C {<shift>})
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:srcname)
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName '$realname'))}
                                          spids: [12105]
                                        )
                                      ]
                                    )
                                    (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: {(DQ ($ Id.VSub_DollarName '$realname')) <T>}
                                              spids: [12121]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (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: {(DQ ($ Id.VSub_DollarName '$stripme'))}
                                          spids: [12154]
                                        )
                                      ]
                                    )
                                    (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: {(DQ )}
                                                          spids: [12199]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                  spids: [12194 12196 12204 -1]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [12167 12184 12210 -1]
                                        )
                                      ]
                                    )
                                    (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 '$tstripme'))}
                                                        )
                                                        (C {<test>} {<-n>} 
                                                          {(DQ ($ Id.VSub_DollarName '$striplib'))}
                                                        )
                                                      ]
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (C {<func_show_eval>} 
                                              {
                                                (DQ ($ Id.VSub_DollarName '$striplib') <' '> 
                                                  ($ Id.VSub_DollarName '$destdir') <'/'> ($ Id.VSub_DollarName '$realname')
                                                )
                                              } {(SQ <'exit $?'>)}
                                            )
                                          ]
                                          spids: [12216 12237]
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<test>} {(DQ ($ Id.VSub_Pound '$#'))} {<-gt>} 
                                                      {<0>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ForEach
                                              iter_name: linkname
                                              do_arg_iter: T
                                              body: 
                                                (command.DoGroup
                                                  children: [
                                                    (command.AndOr
                                                      ops: [Id.Op_DAmp]
                                                      children: [
                                                        (C {<test>} 
                                                          {(DQ ($ Id.VSub_DollarName '$linkname'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$realname'))}
                                                        )
                                                        (C {<func_show_eval>} 
                                                          {
                                                            (DQ <'(cd '> 
                                                              ($ Id.VSub_DollarName '$destdir') <' && { '> ($ Id.VSub_DollarName '$LN_S') <' -f '> ($ Id.VSub_DollarName '$realname') <' '> 
                                                              ($ Id.VSub_DollarName '$linkname') <' || { '> ($ Id.VSub_DollarName '$RM') <' '> ($ Id.VSub_DollarName '$linkname') <' && '> 
                                                              ($ Id.VSub_DollarName '$LN_S') <' '> ($ Id.VSub_DollarName '$realname') <' '> ($ Id.VSub_DollarName '$linkname') <'; }; })'>
                                                            )
                                                          }
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                )
                                            )
                                          ]
                                          spids: [12259 12272]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:lib)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$destdir') <'/'> 
                                                ($ Id.VSub_DollarName '$realname')
                                              )
                                            }
                                          spids: [12352]
                                        )
                                      ]
                                    )
                                    (C {<func_execute_cmds>} 
                                      {(DQ ($ Id.VSub_DollarName '$postinstall_cmds'))} {(SQ <'exit $?'>)}
                                    )
                                  ]
                                  spids: [12081 12092]
                                )
                              ]
                            )
                            (C {<func_basename>} {(DQ ($ Id.VSub_DollarName '$file'))})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:name)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$func_basename_result'))}
                                  spids: [12386]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:instname)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$dir') <'/'> 
                                        ($ Id.VSub_DollarName '$name')
                                      ) <i>
                                    }
                                  spids: [12392]
                                )
                              ]
                            )
                            (C {<func_show_eval>} 
                              {
                                (DQ ($ Id.VSub_DollarName '$install_prog') <' '> 
                                  ($ Id.VSub_DollarName '$instname') <' '> ($ Id.VSub_DollarName '$destdir') <'/'> ($ Id.VSub_DollarName '$name')
                                )
                              } {(SQ <'exit $?'>)}
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$old_library'))})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:staticlibs)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ ($ Id.VSub_DollarName '$staticlibs') <' '> 
                                            ($ Id.VSub_DollarName '$dir') <'/'> ($ Id.VSub_DollarName '$old_library')
                                          )
                                        }
                                      spids: [12433]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [11686 11688 12443 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'> <.lo>}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$destname'))})
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:destfile)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$destdir') <'/'> 
                                                ($ Id.VSub_DollarName '$destname')
                                              )
                                            }
                                          spids: [12475]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [12461 12472]
                                )
                              ]
                              else_action: [
                                (C {<func_basename>} {(DQ ($ Id.VSub_DollarName '$file'))})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:destfile)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_DollarName '$func_basename_result'))}
                                      spids: [12493]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:destfile)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ ($ Id.VSub_DollarName '$destdir') <'/'> 
                                            ($ Id.VSub_DollarName '$destfile')
                                          )
                                        }
                                      spids: [12499]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.Case
                              to_match: {($ Id.VSub_DollarName '$destfile')}
                              arms: [
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'> <.lo>}]
                                  action: [
                                    (C {<func_lo2o>} {(DQ ($ Id.VSub_DollarName '$destfile'))})
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:staticdest)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$func_lo2o_result')}
                                          spids: [12534]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [12522 12524 12538 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'> <.> ($ Id.VSub_DollarName '$objext')}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:staticdest)
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName '$destfile'))}
                                          spids: [12547]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:destfile)
                                          op: assign_op.Equal
                                          rhs: (word.Empty)
                                          spids: [12553]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [12541 12544 12556 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [
                                    (C {<func_fatal_help>} 
                                      {
                                        (DQ <'cannot copy a libtool object to '> 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\`'>
                                          ) ($ Id.VSub_DollarName '$destfile') <'\''>
                                        )
                                      }
                                    )
                                  ]
                                  spids: [12559 12560 12573 -1]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$destfile'))})
                                (C {<func_show_eval>} 
                                  {
                                    (DQ ($ Id.VSub_DollarName '$install_prog') <' '> 
                                      ($ Id.VSub_DollarName '$file') <' '> ($ Id.VSub_DollarName '$destfile')
                                    )
                                  } {(SQ <'exit $?'>)}
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$build_old_libs'))} 
                                              {<Id.Lit_Equals '='>} {<yes>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<func_lo2o>} {(DQ ($ Id.VSub_DollarName '$file'))})
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:staticobj)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$func_lo2o_result')}
                                          spids: [12643]
                                        )
                                      ]
                                    )
                                    (C {<func_show_eval>} 
                                      {
                                        (DQ ($ Id.VSub_DollarName '$install_prog') <' '> 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\$'>
                                          ) <'staticobj '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <staticdest>
                                        )
                                      } {(SQ <'exit $?'>)}
                                    )
                                  ]
                                  spids: [12616 12629]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {($ Id.VSub_DollarName '$EXIT_SUCCESS')}
                            )
                          ]
                          spids: [12447 12449 12671 -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 '$destname'))})
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:destfile)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$destdir') <'/'> 
                                                ($ Id.VSub_DollarName '$destname')
                                              )
                                            }
                                          spids: [12697]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [12683 12694]
                                )
                              ]
                              else_action: [
                                (C {<func_basename>} {(DQ ($ Id.VSub_DollarName '$file'))})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:destfile)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_DollarName '$func_basename_result'))}
                                      spids: [12715]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:destfile)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ ($ Id.VSub_DollarName '$destdir') <'/'> 
                                            ($ Id.VSub_DollarName '$destfile')
                                          )
                                        }
                                      spids: [12721]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:stripped_ext)
                                  op: assign_op.Equal
                                  rhs: {(DQ )}
                                  spids: [12745]
                                )
                              ]
                            )
                            (command.Case
                              to_match: {($ Id.VSub_DollarName '$file')}
                              arms: [
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'> <.exe>}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<test>} {<Id.KW_Bang '!'>} {<-f>} 
                                                      {(DQ ($ Id.VSub_DollarName '$file'))}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (C {<func_stripname>} {(SQ )} {(SQ <.exe>)} 
                                              {(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_stripname_result')}
                                                  spids: [12792]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:stripped_ext)
                                                  op: assign_op.Equal
                                                  rhs: {(DQ <.exe>)}
                                                  spids: [12796]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [12762 12775]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [12757 12759 12805 -1]
                                )
                              ]
                            )
                            (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 '*'>}
                                  ]
                                  action: [
                                    (command.If
                                      arms: [
                                        (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'))}
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:wrapper)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      ($ Id.VSub_DollarName 
'$func_ltwrapper_scriptname_result'
                                                      )
                                                    }
                                                  spids: [12854]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [12835 12844]
                                        )
                                      ]
                                      else_action: [
                                        (C {<func_stripname>} {(SQ )} {(SQ <.exe>)} 
                                          {(DQ ($ Id.VSub_DollarName '$file'))}
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:wrapper)
                                              op: assign_op.Equal
                                              rhs: {($ Id.VSub_DollarName '$func_stripname_result')}
                                              spids: [12875]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [12823 12832 12882 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:wrapper)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$file')}
                                          spids: [12889]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [12885 12886 12893 -1]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<func_ltwrapper_script_p>} 
                                              {(DQ ($ Id.VSub_DollarName '$wrapper'))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:notinst_deplibs)
                                          op: assign_op.Equal
                                          rhs: (word.Empty)
                                          spids: [12911]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:relink_command)
                                          op: assign_op.Equal
                                          rhs: (word.Empty)
                                          spids: [12914]
                                        )
                                      ]
                                    )
                                    (C {<func_source>} {(DQ ($ Id.VSub_DollarName '$wrapper'))})
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<test>} {<-z>} 
                                          {
                                            (DQ 
                                              ($ Id.VSub_DollarName '$generated_by_libtool_version')
                                            )
                                          }
                                        )
                                        (C {<func_fatal_error>} 
                                          {
                                            (DQ <'invalid libtool wrapper script '> 
                                              (word_part.EscapedLiteral
                                                token: <Id.Lit_EscapedChar '\\`'>
                                              ) ($ Id.VSub_DollarName '$wrapper') <'\''>
                                            )
                                          }
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:finalize)
                                          op: assign_op.Equal
                                          rhs: {<yes>}
                                          spids: [12953]
                                        )
                                      ]
                                    )
                                    (command.ForEach
                                      iter_name: lib
                                      iter_words: [{($ Id.VSub_DollarName '$notinst_deplibs')}]
                                      do_arg_iter: F
                                      body: 
                                        (command.DoGroup
                                          children: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:libdir)
                                                  op: assign_op.Equal
                                                  rhs: (word.Empty)
                                                  spids: [12973]
                                                )
                                              ]
                                            )
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: 
                                                    (condition.Shell
                                                      commands: [
                                                        (command.Sentence
                                                          child: 
                                                            (C {<test>} {<-f>} 
                                                              {(DQ ($ Id.VSub_DollarName '$lib'))}
                                                            )
                                                          terminator: <Id.Op_Semi _>
                                                        )
                                                      ]
                                                    )
                                                  action: [
                                                    (C {<func_source>} 
                                                      {(DQ ($ Id.VSub_DollarName '$lib'))}
                                                    )
                                                  ]
                                                  spids: [12976 12987]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:libfile)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {(DQ ($ Id.VSub_DollarName '$libdir') <'/'>) 
                                                      (command_sub
                                                        left_token: <Id.Left_Backtick '`'>
                                                        child: 
                                                          (command.Pipeline
                                                            children: [
                                                              (C {($ Id.VSub_DollarName '$ECHO')} 
                                                                {(DQ ($ Id.VSub_DollarName '$lib'))}
                                                              )
                                                              (C {($ Id.VSub_DollarName '$SED')} 
                                                                {(SQ <'s%^.*/%%g'>)}
                                                              )
                                                            ]
                                                            negated: F
                                                          )
                                                      )
                                                    }
                                                  spids: [13000]
                                                )
                                              ]
                                            )
                                            (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 '$libdir')
                                                                    )
                                                                  }
                                                                )
                                                                (C {<test>} {<Id.KW_Bang '!'>} {<-f>} 
                                                                  {
                                                                    (DQ 
                                                                      ($ Id.VSub_DollarName 
'$libfile'
                                                                      )
                                                                    )
                                                                  }
                                                                )
                                                              ]
                                                            )
                                                          terminator: <Id.Op_Semi _>
                                                        )
                                                      ]
                                                    )
                                                  action: [
                                                    (C {<func_warning>} 
                                                      {
                                                        (DQ 
                                                          (word_part.EscapedLiteral
                                                            token: <Id.Lit_EscapedChar '\\`'>
                                                          ) ($ Id.VSub_DollarName '$lib') <'\' has not been installed in '> 
                                                          (word_part.EscapedLiteral
                                                            token: <Id.Lit_EscapedChar '\\`'>
                                                          ) ($ Id.VSub_DollarName '$libdir') <'\''>
                                                        )
                                                      }
                                                    )
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (sh_lhs_expr.Name name:finalize)
                                                          op: assign_op.Equal
                                                          rhs: {<no>}
                                                          spids: [13065]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                  spids: [13027 13050]
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:relink_command)
                                          op: assign_op.Equal
                                          rhs: (word.Empty)
                                          spids: [13076]
                                        )
                                      ]
                                    )
                                    (C {<func_source>} {(DQ ($ Id.VSub_DollarName '$wrapper'))})
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:outputname)
                                          op: assign_op.Equal
                                          rhs: (word.Empty)
                                          spids: [13087]
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.AndOr
                                                      ops: [Id.Op_DAmp]
                                                      children: [
                                                        (C {<test>} 
                                                          {
                                                            (DQ 
                                                              ($ Id.VSub_DollarName '$fast_install')
                                                            )
                                                          } {<Id.Lit_Equals '='>} {<no>}
                                                        )
                                                        (C {<test>} {<-n>} 
                                                          {
                                                            (DQ 
                                                              ($ Id.VSub_DollarName '$relink_command')
                                                            )
                                                          }
                                                        )
                                                      ]
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.AndOr
                                              ops: [Id.Op_DPipe]
                                              children: [
                                                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                                (BraceGroup
                                                  children: [
                                                    (command.If
                                                      arms: [
                                                        (if_arm
                                                          cond: 
                                                            (condition.Shell
                                                              commands: [
                                                                (command.Sentence
                                                                  child: 
                                                                    (C {<test>} 
                                                                      {
                                                                        (DQ 
                                                                          ($ Id.VSub_DollarName 
'$finalize'
                                                                          )
                                                                        )
                                                                      } {<Id.Lit_Equals '='>} {<yes>}
                                                                    )
                                                                  terminator: <Id.Op_Semi _>
                                                                )
                                                              ]
                                                            )
                                                          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: [13139]
                                                                )
                                                              ]
                                                            )
                                                            (C {<func_basename>} 
                                                              {
                                                                (DQ ($ Id.VSub_DollarName '$file') 
                                                                  ($ Id.VSub_DollarName 
'$stripped_ext'
                                                                  )
                                                                )
                                                              }
                                                            )
                                                            (command.ShAssignment
                                                              pairs: [
                                                                (assign_pair
                                                                  lhs: (sh_lhs_expr.Name name:file)
                                                                  op: assign_op.Equal
                                                                  rhs: 
                                                                    {
                                                                      (DQ 
                                                                        ($ Id.VSub_DollarName 
'$func_basename_result'
                                                                        )
                                                                      )
                                                                    }
                                                                  spids: [13155]
                                                                )
                                                              ]
                                                            )
                                                            (command.ShAssignment
                                                              pairs: [
                                                                (assign_pair
                                                                  lhs: 
                                                                    (sh_lhs_expr.Name
                                                                      name: outputname
                                                                    )
                                                                  op: assign_op.Equal
                                                                  rhs: 
                                                                    {
                                                                      (DQ 
                                                                        ($ Id.VSub_DollarName 
'$tmpdir'
                                                                        ) <'/'> ($ Id.VSub_DollarName '$file')
                                                                      )
                                                                    }
                                                                  spids: [13161]
                                                                )
                                                              ]
                                                            )
                                                            (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'
                                                                                  )
                                                                                } {(SQ <'s%@OUTPUT@%'>) (DQ ($ Id.VSub_DollarName '$outputname')) (SQ <'%g'>)}
                                                                              )
                                                                            ]
                                                                            negated: F
                                                                          )
                                                                      )
                                                                    }
                                                                  spids: [13173]
                                                                )
                                                              ]
                                                            )
                                                            (command.AndOr
                                                              ops: [Id.Op_DPipe]
                                                              children: [
                                                                (C 
                                                                  {
                                                                    ($ Id.VSub_DollarName 
'$opt_silent'
                                                                    )
                                                                  }
                                                                )
                                                                (BraceGroup
                                                                  children: [
                                                                    (C {<func_quote_for_expand>} 
                                                                      {
                                                                        (DQ 
                                                                          ($ Id.VSub_DollarName 
'$relink_command'
                                                                          )
                                                                        )
                                                                      }
                                                                    )
                                                                    (C {<eval>} 
                                                                      {
                                                                        (DQ <'func_echo '> 
                                                                          ($ Id.VSub_DollarName 
'$func_quote_for_expand_result'
                                                                          )
                                                                        )
                                                                      }
                                                                    )
                                                                  ]
                                                                )
                                                              ]
                                                            )
                                                            (command.If
                                                              arms: [
                                                                (if_arm
                                                                  cond: 
                                                                    (condition.Shell
                                                                      commands: [
                                                                        (command.Sentence
                                                                          child: 
                                                                            (C {<eval>} 
                                                                              {
                                                                                (DQ 
                                                                                  ($ 
Id.VSub_DollarName '$relink_command'
                                                                                  )
                                                                                )
                                                                              }
                                                                            )
                                                                          terminator: <Id.Op_Semi _>
                                                                        )
                                                                      ]
                                                                    )
                                                                  action: [(C {<Id.Lit_Colon ':'>})]
                                                                  spids: [13225 13234]
                                                                )
                                                              ]
                                                              else_action: [
                                                                (C {<func_error>} 
                                                                  {
                                                                    (DQ <'error: relink '> 
                                                                      (word_part.EscapedLiteral
                                                                        token: 
                                                                          <Id.Lit_EscapedChar '\\`'>
                                                                      ) ($ Id.VSub_DollarName '$file') <'\' with the above command before installing it'>
                                                                    )
                                                                  }
                                                                )
                                                                (command.AndOr
                                                                  ops: [Id.Op_DPipe]
                                                                  children: [
                                                                    (C 
                                                                      {
                                                                        ($ Id.VSub_DollarName 
'$opt_dry_run'
                                                                        )
                                                                      }
                                                                    )
                                                                    (C {(${ Id.VSub_Name RM) <r>} 
                                                                      {
                                                                        (DQ 
                                                                          ($ Id.VSub_DollarName 
'$tmpdir'
                                                                          )
                                                                        )
                                                                      }
                                                                    )
                                                                  ]
                                                                )
                                                                (command.ControlFlow
                                                                  token: 
                                                                    <Id.ControlFlow_Continue 
continue
                                                                    >
                                                                )
                                                              ]
                                                            )
                                                            (command.ShAssignment
                                                              pairs: [
                                                                (assign_pair
                                                                  lhs: (sh_lhs_expr.Name name:file)
                                                                  op: assign_op.Equal
                                                                  rhs: 
                                                                    {
                                                                      (DQ 
                                                                        ($ Id.VSub_DollarName 
'$outputname'
                                                                        )
                                                                      )
                                                                    }
                                                                  spids: [13272]
                                                                )
                                                              ]
                                                            )
                                                          ]
                                                          spids: [13123 13136]
                                                        )
                                                      ]
                                                      else_action: [
                                                        (C {<func_warning>} 
                                                          {
                                                            (DQ <'cannot relink '> 
                                                              (word_part.EscapedLiteral
                                                                token: <Id.Lit_EscapedChar '\\`'>
                                                              ) ($ Id.VSub_DollarName '$file') <'\''>
                                                            )
                                                          }
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [13090 13113]
                                        )
                                      ]
                                      else_action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:file)
                                              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 '$file') 
                                                                ($ Id.VSub_DollarName '$stripped_ext')
                                                              )
                                                            }
                                                          )
                                                          (C {($ Id.VSub_DollarName '$SED')} 
                                                            {
                                                              (DQ <'s%'> <Id.Lit_BadBackslash '\\'> 
                                                                <'([^/]*'> <Id.Lit_BadBackslash '\\'> <')'> <Id.Lit_Dollar '$'> <'%'> ($ Id.VSub_DollarName '$objdir') <'/'> 
                                                                <Id.Lit_BadBackslash '\\'> <'1%'>
                                                              )
                                                            }
                                                          )
                                                        ]
                                                        negated: F
                                                      )
                                                  )
                                                }
                                              spids: [13304]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [12899 12908]
                                )
                              ]
                            )
                            (command.Case
                              to_match: 
                                {($ Id.VSub_DollarName '$install_prog') <Id.Lit_Comma ','> 
                                  ($ Id.VSub_DollarName '$host')
                                }
                              arms: [
                                (case_arm
                                  pat_list: [
                                    {<Id.Lit_Star '*'> <'/usr/bin/install'> <Id.Lit_Star '*'> 
                                      <Id.Lit_Comma ','> <Id.Lit_Star '*'> <cygwin> <Id.Lit_Star '*'>
                                    }
                                  ]
                                  action: [
                                    (command.Case
                                      to_match: 
                                        {($ Id.VSub_DollarName '$file') <Id.Lit_Colon ':'> 
                                          ($ Id.VSub_DollarName '$destfile')
                                        }
                                      arms: [
                                        (case_arm
                                          pat_list: [
                                            {<Id.Lit_Star '*'> <.exe> <Id.Lit_Colon ':'> 
                                              <Id.Lit_Star '*'> <.exe>
                                            }
                                          ]
                                          spids: [13384 13389 13396 -1]
                                        )
                                        (case_arm
                                          pat_list: [
                                            {<Id.Lit_Star '*'> <.exe> <Id.Lit_Colon ':'> 
                                              <Id.Lit_Star '*'>
                                            }
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:destfile)
                                                  op: assign_op.Equal
                                                  rhs: {($ Id.VSub_DollarName '$destfile') <.exe>}
                                                  spids: [13406]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [13399 13403 13411 -1]
                                        )
                                        (case_arm
                                          pat_list: [
                                            {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> 
                                              <.exe>
                                            }
                                          ]
                                          action: [
                                            (C {<func_stripname>} {(SQ )} {(SQ <.exe>)} 
                                              {(DQ ($ Id.VSub_DollarName '$destfile'))}
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:destfile)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {($ Id.VSub_DollarName '$func_stripname_result')}
                                                  spids: [13435]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [13414 13418 13439 -1]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [13365 13372 13445 -1]
                                )
                              ]
                            )
                            (C {<func_show_eval>} 
                              {
                                (DQ ($ Id.VSub_DollarName '$install_prog') 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\$'>
                                  ) <'stripme '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'file '> 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\$'>
                                  ) <destfile>
                                )
                              } {(SQ <'exit $?'>)}
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<test>} {<-n>} 
                                                  {(DQ ($ Id.VSub_DollarName '$outputname'))}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (C {(${ Id.VSub_Name RM) <r>} 
                                          {(DQ ($ Id.VSub_DollarName '$tmpdir'))}
                                        )
                                      ]
                                      spids: [13472 13483]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [12675 12676 13499 -1]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ForEach
              iter_name: file
              iter_words: [{($ Id.VSub_DollarName '$staticlibs')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<func_basename>} {(DQ ($ Id.VSub_DollarName '$file'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:name)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$func_basename_result'))}
                          spids: [13528]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:oldlib)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$destdir') <'/'> 
                                ($ Id.VSub_DollarName '$name')
                              )
                            }
                          spids: [13539]
                        )
                      ]
                    )
                    (C {<func_show_eval>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$install_prog') <' '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\$'>
                          ) <'file '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <oldlib>
                        )
                      } {(SQ <'exit $?'>)}
                    )
                    (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 '$stripme'))})
                                        (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$old_striplib'))})
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<func_show_eval>} 
                              {
                                (DQ ($ Id.VSub_DollarName '$old_striplib') <' '> 
                                  ($ Id.VSub_DollarName '$oldlib')
                                )
                              } {(SQ <'exit $?'>)}
                            )
                          ]
                          spids: [13565 13586]
                        )
                      ]
                    )
                    (C {<func_execute_cmds>} {(DQ ($ Id.VSub_DollarName '$old_postinstall_cmds'))} 
                      {(SQ <'exit $?'>)}
                    )
                  ]
                )
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$future_libdirs'))})
                (C {<func_warning>} 
                  {
                    (DQ <'remember to run '> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\`'>
                      ) ($ Id.VSub_DollarName '$progname') <' --finish'> ($ Id.VSub_DollarName '$future_libdirs') <'\''>
                    )
                  }
                )
              ]
            )
            (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 '$current_libdirs'))})
                                (C {($ Id.VSub_DollarName '$opt_finish')})
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {($ Id.VSub_DollarName '$opt_dry_run')})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:current_libdirs)
                              op: assign_op.Equal
                              rhs: {(DQ <' -n'> ($ Id.VSub_DollarName '$current_libdirs'))}
                              spids: [13676]
                            )
                          ]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:exec_cmd)
                          op: assign_op.Equal
                          rhs: {(SQ <'$SHELL $progpath $preserve_args --finish$current_libdirs'>)}
                          spids: [13683]
                        )
                      ]
                    )
                  ]
                  spids: [13650 13665]
                )
              ]
              else_action: [
                (command.ControlFlow
                  token: <Id.ControlFlow_Exit exit>
                  arg_word: {($ Id.VSub_DollarName '$EXIT_SUCCESS')}
                )
              ]
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {(DQ ($ Id.VSub_DollarName '$mode'))} {<Id.Lit_Equals '='>} {<install>})
        (C {<func_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 '$@'))})
            )
          }
        )
      ]
    )
    (command.ShFunction
      name: func_generate_dlsyms
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$opt_debug')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_outputname)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [13746]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_originator)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$2'))}
                  spids: [13752]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_pic_p)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Number 3>
                          suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<no>})
                        )
                      )
                    }
                  spids: [13758]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_prefix)
                  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 '$my_originator'))}
                              )
                              (C {<sed>} {(SQ <'s%[^a-zA-Z0-9]%_%g'>)})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [13768]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_dlsyms)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [13788]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<test>} {<-n>} 
                                  {
                                    (DQ ($ Id.VSub_DollarName '$dlfiles') 
                                      ($ Id.VSub_DollarName '$dlprefiles')
                                    )
                                  }
                                )
                                (C {<test>} {(DQ ($ Id.VSub_DollarName '$dlself'))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<no>}
                                )
                              ]
                            )
                          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>} {<-n>} {(DQ ($ Id.VSub_DollarName '$NM'))})
                                        (C {<test>} {<-n>} 
                                          {(DQ ($ Id.VSub_DollarName '$global_symbol_pipe'))}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:my_dlsyms)
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name my_outputname) <S.c>)}
                                  spids: [13844]
                                )
                              ]
                            )
                          ]
                          spids: [13820 13841]
                        )
                      ]
                      else_action: [
                        (C {<func_error>} 
                          {(DQ <'not configured to extract global symbols from dlpreopened files'>)}
                        )
                      ]
                    )
                  ]
                  spids: [13792 13817]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$my_dlsyms'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$my_dlsyms')}
                      arms: [
                        (case_arm
                          pat_list: [{(DQ )}]
                          spids: [13891 13893 13895 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'> <.c>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:nlist)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$output_objdir') <'/'> 
                                        (${ Id.VSub_Name my_outputname) <.nm>
                                      )
                                    }
                                  spids: [13907]
                                )
                              ]
                            )
                            (C {<func_show_eval>} 
                              {
                                (DQ ($ Id.VSub_DollarName '$RM') <' '> ($ Id.VSub_DollarName '$nlist') 
                                  <' '> (${ Id.VSub_Name nlist) <'S '> (${ Id.VSub_Name nlist) <T>
                                )
                              }
                            )
                            (C {<func_verbose>} 
                              {
                                (DQ <'creating '> ($ Id.VSub_DollarName '$output_objdir') <'/'> 
                                  ($ Id.VSub_DollarName '$my_dlsyms')
                                )
                              }
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                (command.Simple
                                  words: [
                                    {($ Id.VSub_DollarName '$ECHO')}
                                    {
                                      (DQ <'/* '> ($ Id.VSub_DollarName '$my_dlsyms') 
                                        <' - symbol resolution table for '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) ($ Id.VSub_DollarName '$my_outputname') 
                                        <'\' dlsym emulation. */\n'> <'/* Generated by '> ($ Id.VSub_DollarName '$PROGRAM') <' (GNU '> ($ Id.VSub_DollarName '$PACKAGE') 
                                        ($ Id.VSub_DollarName '$TIMESTAMP') <') '> ($ Id.VSub_DollarName '$VERSION') <' */\n'> <'\n'> <'#ifdef __cplusplus\n'> <'extern '> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\"'>
                                        ) <C> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' {\n'> <'#endif\n'> <'\n'> 
                                        <
'#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))\n'
                                        > <'#pragma GCC diagnostic ignored '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                        <-Wstrict-prototypes> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'#endif\n'> <'\n'> 
                                        <'/* External symbol declarations for the compiler. */'>
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: 
                                        {
                                          (DQ ($ Id.VSub_DollarName '$output_objdir') <'/'> 
                                            ($ Id.VSub_DollarName '$my_dlsyms')
                                          )
                                        }
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$dlself'))} 
                                              {<Id.Lit_Equals '='>} {<yes>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<func_verbose>} 
                                      {
                                        (DQ <'generating symbol list for '> 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\`'>
                                          ) ($ Id.VSub_DollarName '$output') <'\''>
                                        )
                                      }
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                        (command.Simple
                                          words: [{<echo>} {(SQ <': @PROGRAM@ '>)}]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_Great '>'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:progfiles)
                                          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 '$objs') 
                                                            ($ Id.VSub_DollarName '$old_deplibs')
                                                          )
                                                        }
                                                      )
                                                      (C {($ Id.VSub_DollarName '$SP2NL')})
                                                      (C {($ Id.VSub_DollarName '$SED')} 
                                                        {(DQ ($ Id.VSub_DollarName '$lo2o'))}
                                                      )
                                                      (C {($ Id.VSub_DollarName '$NL2SP')})
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [14055]
                                        )
                                      ]
                                    )
                                    (command.ForEach
                                      iter_name: progfile
                                      iter_words: [{($ Id.VSub_DollarName '$progfiles')}]
                                      do_arg_iter: F
                                      body: 
                                        (command.DoGroup
                                          children: [
                                            (C {<func_verbose>} 
                                              {
                                                (DQ <'extracting global C symbols from '> 
                                                  (word_part.EscapedLiteral
                                                    token: <Id.Lit_EscapedChar '\\`'>
                                                  ) ($ Id.VSub_DollarName '$progfile') <'\''>
                                                )
                                              }
                                            )
                                            (command.AndOr
                                              ops: [Id.Op_DPipe]
                                              children: [
                                                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                                (C {<eval>} 
                                                  {
                                                    (DQ ($ Id.VSub_DollarName '$NM') <' '> 
                                                      ($ Id.VSub_DollarName '$progfile') <' | '> ($ Id.VSub_DollarName '$global_symbol_pipe') <' >> \''> ($ Id.VSub_DollarName '$nlist') <'\''>
                                                    )
                                                  }
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<test>} {<-n>} 
                                                      {(DQ ($ Id.VSub_DollarName '$exclude_expsyms'))}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.AndOr
                                              ops: [Id.Op_DPipe]
                                              children: [
                                                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                                (BraceGroup
                                                  children: [
                                                    (command.Simple
                                                      words: [
                                                        {($ Id.VSub_DollarName '$EGREP')}
                                                        {<-v>}
                                                        {
                                                          (DQ <' ('> 
                                                            ($ Id.VSub_DollarName '$exclude_expsyms') <')'> <Id.Lit_Dollar '$'>
                                                          )
                                                        }
                                                        {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                                      ]
                                                      redirects: [
                                                        (redir
                                                          op: <Id.Redir_Great '>'>
                                                          loc: (redir_loc.Fd fd:1)
                                                          arg: 
                                                            {(DQ ($ Id.VSub_DollarName '$nlist')) <T>}
                                                        )
                                                      ]
                                                      do_fork: T
                                                    )
                                                    (C {($ Id.VSub_DollarName '$MV')} 
                                                      {(DQ ($ Id.VSub_DollarName '$nlist')) <T>} {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                                    )
                                                  ]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [14128 14139]
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<test>} {<-n>} 
                                                      {
                                                        (DQ 
                                                          ($ Id.VSub_DollarName 
'$export_symbols_regex'
                                                          )
                                                        )
                                                      }
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.AndOr
                                              ops: [Id.Op_DPipe]
                                              children: [
                                                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                                (BraceGroup
                                                  children: [
                                                    (command.Simple
                                                      words: [
                                                        {($ Id.VSub_DollarName '$EGREP')}
                                                        {<-e>}
                                                        {
                                                          (DQ 
                                                            ($ Id.VSub_DollarName 
'$export_symbols_regex'
                                                            )
                                                          )
                                                        }
                                                        {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                                      ]
                                                      redirects: [
                                                        (redir
                                                          op: <Id.Redir_Great '>'>
                                                          loc: (redir_loc.Fd fd:1)
                                                          arg: 
                                                            {(DQ ($ Id.VSub_DollarName '$nlist')) <T>}
                                                        )
                                                      ]
                                                      do_fork: T
                                                    )
                                                    (C {($ Id.VSub_DollarName '$MV')} 
                                                      {(DQ ($ Id.VSub_DollarName '$nlist')) <T>} {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                                    )
                                                  ]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [14191 14202]
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<test>} {<-z>} 
                                                      {(DQ ($ Id.VSub_DollarName '$export_symbols'))}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:export_symbols)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ ($ Id.VSub_DollarName '$output_objdir') 
                                                        <'/'> ($ Id.VSub_DollarName '$outputname') <.exp>
                                                      )
                                                    }
                                                  spids: [14269]
                                                )
                                              ]
                                            )
                                            (command.AndOr
                                              ops: [Id.Op_DPipe]
                                              children: [
                                                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                                (BraceGroup
                                                  children: [
                                                    (C {($ Id.VSub_DollarName '$RM')} 
                                                      {($ Id.VSub_DollarName '$export_symbols')}
                                                    )
                                                    (command.Simple
                                                      words: [
                                                        {(${ Id.VSub_Name SED)}
                                                        {<-n>}
                                                        {<-e>}
                                                        {(SQ <'/^: @PROGRAM@ $/d'>)}
                                                        {<-e>}
                                                        {(SQ <'s/^.* \\(.*\\)$/\\1/p'>)}
                                                      ]
                                                      redirects: [
                                                        (redir
                                                          op: <Id.Redir_Less '<'>
                                                          loc: (redir_loc.Fd fd:0)
                                                          arg: {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                                        )
                                                        (redir
                                                          op: <Id.Redir_Great '>'>
                                                          loc: (redir_loc.Fd fd:1)
                                                          arg: 
                                                            {
                                                              (DQ 
                                                                ($ Id.VSub_DollarName 
'$export_symbols'
                                                                )
                                                              )
                                                            }
                                                        )
                                                      ]
                                                      do_fork: T
                                                    )
                                                    (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 '*'> <cegcc> 
                                                              <Id.Lit_Star '*'>
                                                            }
                                                          ]
                                                          action: [
                                                            (command.Simple
                                                              words: [{<echo>} {<EXPORTS>}]
                                                              redirects: [
                                                                (redir
                                                                  op: <Id.Redir_Great '>'>
                                                                  loc: (redir_loc.Fd fd:1)
                                                                  arg: 
                                                                    {
                                                                      (DQ 
                                                                        ($ Id.VSub_DollarName 
'$output_objdir'
                                                                        ) <'/'> ($ Id.VSub_DollarName '$outputname') <.def>
                                                                      )
                                                                    }
                                                                )
                                                              ]
                                                              do_fork: T
                                                            )
                                                            (command.Simple
                                                              words: [
                                                                {<cat>}
                                                                {
                                                                  (DQ 
                                                                    ($ Id.VSub_DollarName 
'$export_symbols'
                                                                    )
                                                                  )
                                                                }
                                                              ]
                                                              redirects: [
                                                                (redir
                                                                  op: <Id.Redir_DGreat '>>'>
                                                                  loc: (redir_loc.Fd fd:1)
                                                                  arg: 
                                                                    {
                                                                      (DQ 
                                                                        ($ Id.VSub_DollarName 
'$output_objdir'
                                                                        ) <'/'> ($ Id.VSub_DollarName '$outputname') <.def>
                                                                      )
                                                                    }
                                                                )
                                                              ]
                                                              do_fork: T
                                                            )
                                                          ]
                                                          spids: [14328 14344 14377 -1]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [14255 14266]
                                        )
                                      ]
                                      else_action: [
                                        (command.AndOr
                                          ops: [Id.Op_DPipe]
                                          children: [
                                            (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                            (BraceGroup
                                              children: [
                                                (command.Simple
                                                  words: [
                                                    {(${ Id.VSub_Name SED)}
                                                    {<-e>}
                                                    {(SQ <'s/\\([].[*^$]\\)/\\\\\\1/g'>)}
                                                    {<-e>}
                                                    {(SQ <'s/^/ /'>)}
                                                    {<-e>}
                                                    {(SQ <'s/$/$/'>)}
                                                  ]
                                                  redirects: [
                                                    (redir
                                                      op: <Id.Redir_Less '<'>
                                                      loc: (redir_loc.Fd fd:0)
                                                      arg: 
                                                        {
                                                          (DQ 
                                                            ($ Id.VSub_DollarName '$export_symbols')
                                                          )
                                                        }
                                                    )
                                                    (redir
                                                      op: <Id.Redir_Great '>'>
                                                      loc: (redir_loc.Fd fd:1)
                                                      arg: 
                                                        {
                                                          (DQ ($ Id.VSub_DollarName '$output_objdir') 
                                                            <'/'> ($ Id.VSub_DollarName '$outputname') <.exp>
                                                          )
                                                        }
                                                    )
                                                  ]
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  words: [
                                                    {($ Id.VSub_DollarName '$GREP')}
                                                    {<-f>}
                                                    {
                                                      (DQ ($ Id.VSub_DollarName '$output_objdir') 
                                                        <'/'> ($ Id.VSub_DollarName '$outputname') <.exp>
                                                      )
                                                    }
                                                  ]
                                                  redirects: [
                                                    (redir
                                                      op: <Id.Redir_Less '<'>
                                                      loc: (redir_loc.Fd fd:0)
                                                      arg: {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                                    )
                                                    (redir
                                                      op: <Id.Redir_Great '>'>
                                                      loc: (redir_loc.Fd fd:1)
                                                      arg: {(DQ ($ Id.VSub_DollarName '$nlist')) <T>}
                                                    )
                                                  ]
                                                  do_fork: T
                                                )
                                                (C {($ Id.VSub_DollarName '$MV')} 
                                                  {(DQ ($ Id.VSub_DollarName '$nlist')) <T>} {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                                )
                                                (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 '*'> <cegcc> <Id.Lit_Star '*'>}
                                                      ]
                                                      action: [
                                                        (command.Simple
                                                          words: [{<echo>} {<EXPORTS>}]
                                                          redirects: [
                                                            (redir
                                                              op: <Id.Redir_Great '>'>
                                                              loc: (redir_loc.Fd fd:1)
                                                              arg: 
                                                                {
                                                                  (DQ 
                                                                    ($ Id.VSub_DollarName 
'$output_objdir'
                                                                    ) <'/'> ($ Id.VSub_DollarName '$outputname') <.def>
                                                                  )
                                                                }
                                                            )
                                                          ]
                                                          do_fork: T
                                                        )
                                                        (command.Simple
                                                          words: [
                                                            {<cat>}
                                                            {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                                          ]
                                                          redirects: [
                                                            (redir
                                                              op: <Id.Redir_DGreat '>>'>
                                                              loc: (redir_loc.Fd fd:1)
                                                              arg: 
                                                                {
                                                                  (DQ 
                                                                    ($ Id.VSub_DollarName 
'$output_objdir'
                                                                    ) <'/'> ($ Id.VSub_DollarName '$outputname') <.def>
                                                                  )
                                                                }
                                                            )
                                                          ]
                                                          do_fork: T
                                                        )
                                                      ]
                                                      spids: [14478 14494 14527 -1]
                                                    )
                                                  ]
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [14006 14019]
                                )
                              ]
                            )
                            (command.ForEach
                              iter_name: dlprefile
                              iter_words: [{($ Id.VSub_DollarName '$dlprefiles')}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (C {<func_verbose>} 
                                      {
                                        (DQ <'extracting global C symbols from '> 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\`'>
                                          ) ($ Id.VSub_DollarName '$dlprefile') <'\''>
                                        )
                                      }
                                    )
                                    (C {<func_basename>} {(DQ ($ Id.VSub_DollarName '$dlprefile'))})
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:name)
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName '$func_basename_result'))}
                                          spids: [14572]
                                        )
                                      ]
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                        (BraceGroup
                                          children: [
                                            (command.Simple
                                              words: [
                                                {($ Id.VSub_DollarName '$ECHO')}
                                                {(DQ <': '> ($ Id.VSub_DollarName '$name') <' '>)}
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_DGreat '>>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                                )
                                              ]
                                              do_fork: T
                                            )
                                            (C {<eval>} 
                                              {
                                                (DQ ($ Id.VSub_DollarName '$NM') <' '> 
                                                  ($ Id.VSub_DollarName '$dlprefile') <' 2>/dev/null | '> ($ Id.VSub_DollarName '$global_symbol_pipe') <' >> \''> 
                                                  ($ Id.VSub_DollarName '$nlist') <'\''>
                                                )
                                              }
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                )
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                (BraceGroup
                                  children: [
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$nlist'))})
                                        (command.Simple
                                          words: [{<Id.Lit_Colon ':'>}]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_Great '>'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<test>} {<-n>} 
                                                      {(DQ ($ Id.VSub_DollarName '$exclude_expsyms'))}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.Simple
                                              words: [
                                                {($ Id.VSub_DollarName '$EGREP')}
                                                {<-v>}
                                                {
                                                  (DQ <' ('> ($ Id.VSub_DollarName '$exclude_expsyms') 
                                                    <')'> <Id.Lit_Dollar '$'>
                                                  )
                                                }
                                                {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_Great '>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {(DQ ($ Id.VSub_DollarName '$nlist')) <T>}
                                                )
                                              ]
                                              do_fork: T
                                            )
                                            (C {($ Id.VSub_DollarName '$MV')} 
                                              {(DQ ($ Id.VSub_DollarName '$nlist')) <T>} {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                            )
                                          ]
                                          spids: [14652 14663]
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.Pipeline
                                                      children: [
                                                        (command.Simple
                                                          words: [
                                                            {($ Id.VSub_DollarName '$GREP')}
                                                            {<-v>}
                                                            {(DQ <'^: '>)}
                                                          ]
                                                          redirects: [
                                                            (redir
                                                              op: <Id.Redir_Less '<'>
                                                              loc: (redir_loc.Fd fd:0)
                                                              arg: 
                                                                {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                                            )
                                                          ]
                                                          do_fork: T
                                                        )
                                                        (command.If
                                                          arms: [
                                                            (if_arm
                                                              cond: 
                                                                (condition.Shell
                                                                  commands: [
                                                                    (command.Sentence
                                                                      child: 
                                                                        (command.Simple
                                                                          words: [{<sort>} {<-k>} {<3>}]
                                                                          redirects: [
                                                                            (redir
                                                                              op: <Id.Redir_Less '<'>
                                                                              loc: 
                                                                                (redir_loc.Fd
                                                                                  fd: 0
                                                                                )
                                                                              arg: {<'/dev/null'>}
                                                                            )
                                                                            (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: [(C {<sort>} {<-k>} {<3>})]
                                                              spids: [14728 14746]
                                                            )
                                                          ]
                                                          else_action: [
                                                            (C {<sort>} {<Id.Lit_Other '+'> <2>})
                                                          ]
                                                        )
                                                        (command.Simple
                                                          words: [{<uniq>}]
                                                          redirects: [
                                                            (redir
                                                              op: <Id.Redir_Great '>'>
                                                              loc: (redir_loc.Fd fd:1)
                                                              arg: 
                                                                {(DQ ($ Id.VSub_DollarName '$nlist')) 
                                                                  <S>
                                                                }
                                                            )
                                                          ]
                                                          do_fork: T
                                                        )
                                                      ]
                                                      negated: F
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [(C {<Id.Lit_Colon ':'>})]
                                          spids: [14709 14780]
                                        )
                                      ]
                                      else_action: [
                                        (command.Simple
                                          words: [{($ Id.VSub_DollarName '$GREP')} {<-v>} {(DQ <'^: '>)}]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_Less '<'>
                                              loc: (redir_loc.Fd fd:0)
                                              arg: {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                            )
                                            (redir
                                              op: <Id.Redir_Great '>'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {(DQ ($ Id.VSub_DollarName '$nlist')) <S>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<test>} {<-f>} 
                                                      {(DQ ($ Id.VSub_DollarName '$nlist')) <S>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (C {<eval>} 
                                              {(DQ ($ Id.VSub_DollarName '$global_symbol_to_cdecl')) 
                                                (SQ <' < "$nlist"S >> "$output_objdir/$my_dlsyms"'>)
                                              }
                                            )
                                          ]
                                          spids: [14815 14827]
                                        )
                                      ]
                                      else_action: [
                                        (command.Simple
                                          words: [{<echo>} {(SQ <'/* NONE */'>)}]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_DGreat '>>'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName '$output_objdir') <'/'> 
                                                    ($ Id.VSub_DollarName '$my_dlsyms')
                                                  )
                                                }
                                            )
                                          ]
                                          do_fork: T
                                        )
                                      ]
                                    )
                                    (command.Simple
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ <'\n'> 
                                            <
'/* The mapping between symbol names and symbols.  */\n'
                                            > <'typedef struct {\n'> <'  const char *name;\n'> <'  void *address;\n'> <'} lt_dlsymlist;\n'>
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_DGreat '>>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$output_objdir') <'/'> 
                                                ($ Id.VSub_DollarName '$my_dlsyms')
                                              )
                                            }
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (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 '*'> <cegcc> <Id.Lit_Star '*'>}
                                          ]
                                          action: [
                                            (command.Simple
                                              words: [
                                                {<echo>}
                                                {
                                                  (DQ 
                                                    <
'/* DATA imports from DLLs on WIN32 con\'t be const, because\n'
                                                    > <'   runtime relocations are performed -- see ld\'s documentation\n'> <'   on pseudo-relocs.  */'>
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_DGreat '>>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: 
                                                    {
                                                      (DQ ($ Id.VSub_DollarName '$output_objdir') 
                                                        <'/'> ($ Id.VSub_DollarName '$my_dlsyms')
                                                      )
                                                    }
                                                )
                                              ]
                                              do_fork: T
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:lt_dlsym_const)
                                                  op: assign_op.Equal
                                                  rhs: (word.Empty)
                                                  spids: [14927]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [14890 14906 14929 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<Id.Lit_Star '*'> <osf5> <Id.Lit_Star '*'>}]
                                          action: [
                                            (command.Simple
                                              words: [
                                                {<echo>}
                                                {
                                                  (DQ 
                                                    <
'/* This system does not cope well with relocations in const data */'
                                                    >
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_DGreat '>>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: 
                                                    {
                                                      (DQ ($ Id.VSub_DollarName '$output_objdir') 
                                                        <'/'> ($ Id.VSub_DollarName '$my_dlsyms')
                                                      )
                                                    }
                                                )
                                              ]
                                              do_fork: T
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:lt_dlsym_const)
                                                  op: assign_op.Equal
                                                  rhs: (word.Empty)
                                                  spids: [14954]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [14932 14935 14956 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<Id.Lit_Star '*'>}]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:lt_dlsym_const)
                                                  op: assign_op.Equal
                                                  rhs: {<Id.KW_Const const>}
                                                  spids: [14963]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [14959 14960 14966 -1]
                                        )
                                      ]
                                    )
                                    (command.Simple
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ <'extern '> ($ Id.VSub_DollarName '$lt_dlsym_const') 
                                            <' lt_dlsymlist\n'> <lt_> (${ Id.VSub_Name my_prefix) <'_LTX_preloaded_symbols[];\n'> 
                                            ($ Id.VSub_DollarName '$lt_dlsym_const') <' lt_dlsymlist\n'> <lt_> (${ Id.VSub_Name my_prefix) <'_LTX_preloaded_symbols[] =\n'> <'{'> <'  { '> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\"'>
                                            ) ($ Id.VSub_DollarName '$my_originator') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                            <', (void *) 0 },'>
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_DGreat '>>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$output_objdir') <'/'> 
                                                ($ Id.VSub_DollarName '$my_dlsyms')
                                              )
                                            }
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.Case
                                      to_match: {($ Id.VSub_DollarName '$need_lib_prefix')}
                                      arms: [
                                        (case_arm
                                          pat_list: [{<no>}]
                                          action: [
                                            (command.Simple
                                              words: [
                                                {<eval>}
                                                {
                                                  (DQ 
                                                    ($ Id.VSub_DollarName 
'$global_symbol_to_c_name_address'
                                                    )
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_Less '<'>
                                                  loc: (redir_loc.Fd fd:0)
                                                  arg: {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                                )
                                                (redir
                                                  op: <Id.Redir_DGreat '>>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: 
                                                    {
                                                      (DQ ($ Id.VSub_DollarName '$output_objdir') 
                                                        <'/'> ($ Id.VSub_DollarName '$my_dlsyms')
                                                      )
                                                    }
                                                )
                                              ]
                                              do_fork: T
                                            )
                                          ]
                                          spids: [15018 15019 15043 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<Id.Lit_Star '*'>}]
                                          action: [
                                            (command.Simple
                                              words: [
                                                {<eval>}
                                                {
                                                  (DQ 
                                                    ($ Id.VSub_DollarName 
'$global_symbol_to_c_name_address_lib_prefix'
                                                    )
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_Less '<'>
                                                  loc: (redir_loc.Fd fd:0)
                                                  arg: {(DQ ($ Id.VSub_DollarName '$nlist'))}
                                                )
                                                (redir
                                                  op: <Id.Redir_DGreat '>>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: 
                                                    {
                                                      (DQ ($ Id.VSub_DollarName '$output_objdir') 
                                                        <'/'> ($ Id.VSub_DollarName '$my_dlsyms')
                                                      )
                                                    }
                                                )
                                              ]
                                              do_fork: T
                                            )
                                          ]
                                          spids: [15046 15047 15071 -1]
                                        )
                                      ]
                                    )
                                    (command.Simple
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ <'  {0, (void *) 0}\n'> <'};\n'> <'\n'> 
                                            <
'/* This works around a problem in FreeBSD linker */\n'
                                            > <'#ifdef FREEBSD_WORKAROUND\n'> <'static const void *lt_preloaded_setup() {\n'> <'  return lt_'> 
                                            (${ Id.VSub_Name my_prefix) <'_LTX_preloaded_symbols;\n'> <'}\n'> <'#endif\n'> <'\n'> <'#ifdef __cplusplus\n'> <'}\n'> <'#endif'>
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_DGreat '>>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$output_objdir') <'/'> 
                                                ($ Id.VSub_DollarName '$my_dlsyms')
                                              )
                                            }
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:pic_flag_for_symtable)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [15117]
                                )
                              ]
                            )
                            (command.Case
                              to_match: {(DQ ($ Id.VSub_DollarName '$compile_command') <' '>)}
                              arms: [
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'> (DQ <' -static '>) <Id.Lit_Star '*'>}]
                                  spids: [15130 15135 15137 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [
                                    (command.Case
                                      to_match: {($ Id.VSub_DollarName '$host')}
                                      arms: [
                                        (case_arm
                                          pat_list: [
                                            {<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'> <-freebsd2> 
                                              <Id.Lit_Star '*'>
                                            }
                                            {<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'> <-freebsd3.0> 
                                              <Id.Lit_Star '*'>
                                            }
                                            {<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'> <-freebsdelf3.0> 
                                              <Id.Lit_Star '*'>
                                            }
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:pic_flag_for_symtable)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ <' '> ($ Id.VSub_DollarName '$pic_flag') 
                                                        <' -DFREEBSD_WORKAROUND'>
                                                      )
                                                    }
                                                  spids: [15191]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [15171 15188 15198 -1]
                                        )
                                        (case_arm
                                          pat_list: [
                                            {<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'> <-hpux> 
                                              <Id.Lit_Star '*'>
                                            }
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:pic_flag_for_symtable)
                                                  op: assign_op.Equal
                                                  rhs: {(DQ <' '> ($ Id.VSub_DollarName '$pic_flag'))}
                                                  spids: [15209]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [15201 15206 15215 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<Id.Lit_Star '*'>}]
                                          action: [
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: 
                                                    (condition.Shell
                                                      commands: [
                                                        (command.Sentence
                                                          child: 
                                                            (C {<test>} 
                                                              {
                                                                (DQ <X> 
                                                                  ($ Id.VSub_DollarName '$my_pic_p')
                                                                )
                                                              } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<Xno>}
                                                            )
                                                          terminator: <Id.Op_Semi _>
                                                        )
                                                      ]
                                                    )
                                                  action: [
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              name: pic_flag_for_symtable
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (DQ <' '> 
                                                                ($ Id.VSub_DollarName '$pic_flag')
                                                              )
                                                            }
                                                          spids: [15240]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                  spids: [15222 15237]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [15218 15219 15250 -1]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [15140 15141 15256 -1]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:symtab_cflags)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [15262]
                                )
                              ]
                            )
                            (command.ForEach
                              iter_name: arg
                              iter_words: [{($ Id.VSub_DollarName '$LTCFLAGS')}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Case
                                      to_match: {($ Id.VSub_DollarName '$arg')}
                                      arms: [
                                        (case_arm
                                          pat_list: [{<-pie>} {<-fpie>} {<-fPIE>}]
                                          spids: [15284 15293 15295 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<Id.Lit_Star '*'>}]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:symtab_cflags)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ ($ Id.VSub_DollarName '$symtab_cflags') 
                                                        <' '> ($ Id.VSub_DollarName '$arg')
                                                      )
                                                    }
                                                  spids: [15301]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [15298 15299 15308 -1]
                                        )
                                      ]
                                    )
                                  ]
                                )
                            )
                            (C {<func_show_eval>} 
                              {
                                (SQ 
                                  <
'(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")'
                                  >
                                )
                              } {(SQ <'exit $?'>)}
                            )
                            (C {<func_show_eval>} 
                              {
                                (SQ 
                                  <
'$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
                                  >
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:symfileobj)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$output_objdir') <'/'> 
                                        (${ Id.VSub_Name my_outputname) <S.> ($ Id.VSub_DollarName '$objext')
                                      )
                                    }
                                  spids: [15350]
                                )
                              ]
                            )
                            (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 '*'> <cegcc> <Id.Lit_Star '*'>}
                                  ]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<test>} {<-f>} 
                                                      {
                                                        (DQ ($ Id.VSub_DollarName '$output_objdir') 
                                                          <'/'> ($ Id.VSub_DollarName '$my_outputname') <.def>
                                                        )
                                                      }
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:compile_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 
'$compile_command'
                                                                    )
                                                                  )
                                                                }
                                                              )
                                                              (C {($ Id.VSub_DollarName '$SED')} 
                                                                {
                                                                  (DQ <'s%@SYMFILE@%'> 
                                                                    ($ Id.VSub_DollarName 
'$output_objdir'
                                                                    ) <'/'> ($ Id.VSub_DollarName '$my_outputname') <'.def '> ($ Id.VSub_DollarName '$symfileobj') <'%'>
                                                                  )
                                                                }
                                                              )
                                                            ]
                                                            negated: F
                                                          )
                                                      )
                                                    }
                                                  spids: [15405]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:finalize_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 
'$finalize_command'
                                                                    )
                                                                  )
                                                                }
                                                              )
                                                              (C {($ Id.VSub_DollarName '$SED')} 
                                                                {
                                                                  (DQ <'s%@SYMFILE@%'> 
                                                                    ($ Id.VSub_DollarName 
'$output_objdir'
                                                                    ) <'/'> ($ Id.VSub_DollarName '$my_outputname') <'.def '> ($ Id.VSub_DollarName '$symfileobj') <'%'>
                                                                  )
                                                                }
                                                              )
                                                            ]
                                                            negated: F
                                                          )
                                                      )
                                                    }
                                                  spids: [15431]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [15388 15402]
                                        )
                                      ]
                                      else_action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:compile_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 
'$compile_command'
                                                                )
                                                              )
                                                            }
                                                          )
                                                          (C {($ Id.VSub_DollarName '$SED')} 
                                                            {
                                                              (DQ <'s%@SYMFILE@%'> 
                                                                ($ Id.VSub_DollarName '$symfileobj') <'%'>
                                                              )
                                                            }
                                                          )
                                                        ]
                                                        negated: F
                                                      )
                                                  )
                                                }
                                              spids: [15460]
                                            )
                                          ]
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:finalize_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 
'$finalize_command'
                                                                )
                                                              )
                                                            }
                                                          )
                                                          (C {($ Id.VSub_DollarName '$SED')} 
                                                            {
                                                              (DQ <'s%@SYMFILE@%'> 
                                                                ($ Id.VSub_DollarName '$symfileobj') <'%'>
                                                              )
                                                            }
                                                          )
                                                        ]
                                                        negated: F
                                                      )
                                                  )
                                                }
                                              spids: [15482]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [15369 15385 15507 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:compile_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 '$compile_command')
                                                          )
                                                        }
                                                      )
                                                      (C {($ Id.VSub_DollarName '$SED')} 
                                                        {
                                                          (DQ <'s%@SYMFILE@%'> 
                                                            ($ Id.VSub_DollarName '$symfileobj') <'%'>
                                                          )
                                                        }
                                                      )
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [15514]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:finalize_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 '$finalize_command')
                                                          )
                                                        }
                                                      )
                                                      (C {($ Id.VSub_DollarName '$SED')} 
                                                        {
                                                          (DQ <'s%@SYMFILE@%'> 
                                                            ($ Id.VSub_DollarName '$symfileobj') <'%'>
                                                          )
                                                        }
                                                      )
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [15536]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [15510 15511 15558 -1]
                                )
                              ]
                            )
                          ]
                          spids: [13898 13900 15564 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (C {<func_fatal_error>} 
                              {
                                (DQ <'unknown suffix for '> 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\`'>
                                  ) ($ Id.VSub_DollarName '$my_dlsyms') <'\''>
                                )
                              }
                            )
                          ]
                          spids: [15567 15568 15581 -1]
                        )
                      ]
                    )
                  ]
                  spids: [13870 13881]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:compile_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 '$compile_command'))}
                                  )
                                  (C {($ Id.VSub_DollarName '$SED')} {(DQ <'s% @SYMFILE@%%'>)})
                                ]
                                negated: F
                              )
                          )
                        }
                      spids: [15607]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:finalize_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 '$finalize_command'))}
                                  )
                                  (C {($ Id.VSub_DollarName '$SED')} {(DQ <'s% @SYMFILE@%%'>)})
                                ]
                                negated: F
                              )
                          )
                        }
                      spids: [15627]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_win32_libid
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$opt_debug')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:win32_libid_type)
                  op: assign_op.Equal
                  rhs: {(DQ <unknown>)}
                  spids: [15684]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:win32_fileres)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [{<file>} {<-L>} {($ Id.VSub_Number '$1')}]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    }
                  spids: [15690]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$win32_fileres')}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <ar> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) 
                      <archive> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) <Id.KW_Import import> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\ '>
                      ) <library> <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:win32_libid_type)
                          op: assign_op.Equal
                          rhs: {(DQ <'x86 archive import'>)}
                          spids: [15727]
                        )
                      ]
                    )
                  ]
                  spids: [15712 15721 15733 -1]
                )
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <ar> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) 
                      <archive> <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (C {($ Id.VSub_DollarName '$OBJDUMP')} {<-f>} 
                                          {(DQ ($ Id.VSub_Number '$1'))}
                                        )
                                        (command.Simple
                                          words: [{($ Id.VSub_DollarName '$SED')} {<-e>} {(SQ <10q>)}]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_Great '2>'>
                                              loc: (redir_loc.Fd fd:2)
                                              arg: {<'/dev/null'>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                        (command.Simple
                                          words: [
                                            {($ Id.VSub_DollarName '$EGREP')}
                                            {
                                              (SQ 
                                                <
'file format (pe-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
                                                >
                                              )
                                            }
                                          ]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_Great '>'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {<'/dev/null'>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                      ]
                                      negated: F
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:win32_nmres)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {($ Id.VSub_DollarName '$NM')} {<-f>} {<posix>} {<-A>} 
                                                {(DQ ($ Id.VSub_Number '$1'))}
                                              )
                                              (C {($ Id.VSub_DollarName '$SED')} {<-n>} {<-e>} 
                                                {
                                                  (SQ <'\n'> <'\t    1,100{\n'> <'\t\t/ I /{\n'> 
                                                    <'\t\t    s,.*,import,\n'> <'\t\t    p\n'> <'\t\t    q\n'> <'\t\t}\n'> <'\t    }'>
                                                  )
                                                }
                                              )
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [15786]
                                )
                              ]
                            )
                            (command.Case
                              to_match: {($ Id.VSub_DollarName '$win32_nmres')}
                              arms: [
                                (case_arm
                                  pat_list: [{<Id.KW_Import import> <Id.Lit_Star '*'>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:win32_libid_type)
                                          op: assign_op.Equal
                                          rhs: {(DQ <'x86 archive import'>)}
                                          spids: [15843]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [15839 15841 15847 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:win32_libid_type)
                                          op: assign_op.Equal
                                          rhs: {(DQ <'x86 archive static'>)}
                                          spids: [15853]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [15850 15851 15857 -1]
                                )
                              ]
                            )
                          ]
                          spids: [15747 15783]
                        )
                      ]
                    )
                  ]
                  spids: [15736 15741 15866 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <DLL> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:win32_libid_type)
                          op: assign_op.Equal
                          rhs: {(DQ <'x86 DLL'>)}
                          spids: [15875]
                        )
                      ]
                    )
                  ]
                  spids: [15869 15872 15881 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <executable> <Id.Lit_Star '*'>}]
                  action: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$win32_fileres')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_Star '*'> <MS> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\ '>
                              ) <Windows> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) <PE> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\ '>
                              ) <Intel> <Id.Lit_Star '*'>
                            }
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:win32_libid_type)
                                  op: assign_op.Equal
                                  rhs: {(DQ <'x86 DLL'>)}
                                  spids: [15912]
                                )
                              ]
                            )
                          ]
                          spids: [15900 15909 15918 -1]
                        )
                      ]
                    )
                  ]
                  spids: [15884 15887 15924 -1]
                )
              ]
            )
            (C {($ Id.VSub_DollarName '$ECHO')} {(DQ ($ Id.VSub_DollarName '$win32_libid_type'))})
          ]
        )
    )
    (command.ShFunction
      name: func_extract_an_archive
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$opt_debug')})
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:f_ex_an_ar_dir)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_Number '$1'))}
                      spids: [15955]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:f_ex_an_ar_oldlib)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [15964]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$lock_old_archive_extraction'))} 
                              {<Id.Lit_Equals '='>} {<yes>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:lockfile)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$f_ex_an_ar_oldlib') <.lock>}
                          spids: [15986]
                        )
                      ]
                    )
                    (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: [15970 15983]
                )
              ]
            )
            (C {<func_show_eval>} 
              {
                (DQ <'(cd '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                  <'f_ex_an_ar_dir && '> ($ Id.VSub_DollarName '$AR') <' x '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <f_ex_an_ar_oldlib> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <')'>
                )
              } {(SQ <'stat=$?; rm -f "$lockfile"; exit $stat'>)}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<test>} {(DQ ($ Id.VSub_DollarName '$lock_old_archive_extraction'))} 
                              {<Id.Lit_Equals '='>} {<yes>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {($ Id.VSub_DollarName '$opt_dry_run')})
                        (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$lockfile'))})
                      ]
                    )
                  ]
                  spids: [16056 16069]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Subshell
                              child: 
                                (command.Pipeline
                                  children: [
                                    (C {($ Id.VSub_DollarName '$AR')} {<t>} 
                                      {(DQ ($ Id.VSub_DollarName '$f_ex_an_ar_oldlib'))}
                                    )
                                    (C {<sort>})
                                    (command.Simple
                                      words: [{<sort>} {<-uc>}]
                                      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
                                    )
                                  ]
                                  negated: F
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<Id.Lit_Colon ':'>})]
                  spids: [16088 16117]
                )
              ]
              else_action: [
                (C {<func_fatal_error>} 
                  {
                    (DQ <'object name conflicts in archive: '> 
                      ($ Id.VSub_DollarName '$f_ex_an_ar_dir') <'/'> ($ Id.VSub_DollarName '$f_ex_an_ar_oldlib')
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: func_extract_archives
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$opt_debug')})
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:my_gentop)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_Number '$1'))}
                      spids: [16156]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_oldlibs)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Number 1>
                        suffix_op: 
                          (suffix_op.Unary
                            tok: <Id.VTest_Plus '+'>
                            arg_word: {(DQ ($ Id.VSub_At '$@'))}
                          )
                      )
                    }
                  spids: [16165]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_oldobjs)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [16175]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_xlib)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [16180]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_xabs)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [16185]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:my_xdir)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [16190]
                )
              ]
            )
            (command.ForEach
              iter_name: my_xlib
              iter_words: [{($ Id.VSub_DollarName '$my_oldlibs')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$my_xlib')}
                      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 '*'>
                            }
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:my_xabs)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$my_xlib'))}
                                  spids: [16238]
                                )
                              ]
                            )
                          ]
                          spids: [16219 16236 16243 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:my_xabs)
                                  op: assign_op.Equal
                                  rhs: 
                                    {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<pwd>})) 
                                      (DQ <'/'> ($ Id.VSub_DollarName '$my_xlib'))
                                    }
                                  spids: [16249]
                                )
                              ]
                            )
                          ]
                          spids: [16246 16247 16260 -1]
                        )
                      ]
                    )
                    (C {<func_basename>} {(DQ ($ Id.VSub_DollarName '$my_xlib'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:my_xlib)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$func_basename_result'))}
                          spids: [16273]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:my_xlib_u)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$my_xlib')}
                          spids: [16279]
                        )
                      ]
                    )
                    (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: {(DQ <' '> ($ Id.VSub_DollarName '$extracted_archives') <' '>)}
                              arms: [
                                (case_arm
                                  pat_list: [
                                    {<Id.Lit_Star '*'> 
                                      (DQ <' '> ($ Id.VSub_DollarName '$my_xlib_u') <' '>) <Id.Lit_Star '*'>
                                    }
                                  ]
                                  action: [
                                    (C {<func_arith>} {($ Id.VSub_DollarName '$extracted_serial')} 
                                      {<Id.Lit_Other '+'>} {<1>}
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:extracted_serial)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$func_arith_result')}
                                          spids: [16321]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:my_xlib_u)
                                          op: assign_op.Equal
                                          rhs: 
                                            {<lt> ($ Id.VSub_DollarName '$extracted_serial') <-> 
                                              ($ Id.VSub_DollarName '$my_xlib')
                                            }
                                          spids: [16325]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [16302 16309 16331 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                                  spids: [16334 16335 16339 -1]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:extracted_archives)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$extracted_archives') <' '> 
                                ($ Id.VSub_DollarName '$my_xlib_u')
                              )
                            }
                          spids: [16348]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:my_xdir)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$my_gentop') <'/'> 
                                ($ Id.VSub_DollarName '$my_xlib_u')
                              )
                            }
                          spids: [16356]
                        )
                      ]
                    )
                    (C {<func_mkdir_p>} {(DQ ($ Id.VSub_DollarName '$my_xdir'))})
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$host')}
                      arms: [
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'> <-darwin> <Id.Lit_Star '*'>}]
                          action: [
                            (C {<func_verbose>} {(DQ <'Extracting '> ($ Id.VSub_DollarName '$my_xabs'))})
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {($ Id.VSub_DollarName '$opt_dry_run')})
                                (BraceGroup
                                  children: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:darwin_orig_dir)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: (C {<pwd>})
                                              )
                                            }
                                          spids: [16405]
                                        )
                                      ]
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (C {<cd>} {($ Id.VSub_DollarName '$my_xdir')})
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Exit exit>
                                          arg_word: {($ Id.VSub_QMark '$?')}
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:darwin_archive)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName '$my_xabs')}
                                          spids: [16424]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:darwin_curdir)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: (C {<pwd>})
                                              )
                                            }
                                          spids: [16428]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:darwin_base_archive)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (C {<basename>} 
                                                    {(DQ ($ Id.VSub_DollarName '$darwin_archive'))}
                                                  )
                                              )
                                            }
                                          spids: [16436]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:darwin_arches)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.AndOr
                                                    ops: [Id.Op_DPipe]
                                                    children: [
                                                      (command.Pipeline
                                                        children: [
                                                          (command.Simple
                                                            words: [
                                                              {($ Id.VSub_DollarName '$LIPO')}
                                                              {<-info>}
                                                              {
                                                                (DQ 
                                                                  ($ Id.VSub_DollarName 
'$darwin_archive'
                                                                  )
                                                                )
                                                              }
                                                            ]
                                                            redirects: [
                                                              (redir
                                                                op: <Id.Redir_Great '2>'>
                                                                loc: (redir_loc.Fd fd:2)
                                                                arg: {<'/dev/null'>}
                                                              )
                                                            ]
                                                            do_fork: T
                                                          )
                                                          (command.Simple
                                                            words: [
                                                              {($ Id.VSub_DollarName '$GREP')}
                                                              {<Architectures>}
                                                            ]
                                                            redirects: [
                                                              (redir
                                                                op: <Id.Redir_Great '2>'>
                                                                loc: (redir_loc.Fd fd:2)
                                                                arg: {<'/dev/null'>}
                                                              )
                                                            ]
                                                            do_fork: T
                                                          )
                                                        ]
                                                        negated: F
                                                      )
                                                      (C {<true>})
                                                    ]
                                                  )
                                              )
                                            }
                                          spids: [16448]
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<test>} {<-n>} 
                                                      {(DQ ($ Id.VSub_DollarName '$darwin_arches'))}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:darwin_arches)
                                                  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 
'$darwin_arches'
                                                                    )
                                                                  )
                                                                }
                                                              )
                                                              (C {($ Id.VSub_DollarName '$SED')} {<-e>} 
                                                                {(SQ <'s/.*are://'>)}
                                                              )
                                                            ]
                                                            negated: F
                                                          )
                                                      )
                                                    }
                                                  spids: [16492]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:darwin_arch)
                                                  op: assign_op.Equal
                                                  rhs: (word.Empty)
                                                  spids: [16514]
                                                )
                                              ]
                                            )
                                            (C {<func_verbose>} 
                                              {
                                                (DQ ($ Id.VSub_DollarName '$darwin_base_archive') 
                                                  <' has multiple architectures '> ($ Id.VSub_DollarName '$darwin_arches')
                                                )
                                              }
                                            )
                                            (command.ForEach
                                              iter_name: darwin_arch
                                              iter_words: [{($ Id.VSub_DollarName '$darwin_arches')}]
                                              do_arg_iter: F
                                              body: 
                                                (command.DoGroup
                                                  children: [
                                                    (C {<func_mkdir_p>} 
                                                      {
                                                        (DQ <unfat-> ($ Id.VSub_Dollar '$$') <'/'> 
                                                          (${ Id.VSub_Name darwin_base_archive) <-> (${ Id.VSub_Name darwin_arch)
                                                        )
                                                      }
                                                    )
                                                    (C {($ Id.VSub_DollarName '$LIPO')} {<-thin>} 
                                                      {($ Id.VSub_DollarName '$darwin_arch')} {<-output>} 
                                                      {
                                                        (DQ <unfat-> ($ Id.VSub_Dollar '$$') <'/'> 
                                                          (${ Id.VSub_Name darwin_base_archive) <-> (${ Id.VSub_Name darwin_arch) <'/'> (${ Id.VSub_Name darwin_base_archive)
                                                        )
                                                      } {(DQ (${ Id.VSub_Name darwin_archive))}
                                                    )
                                                    (C {<cd>} 
                                                      {
                                                        (DQ <unfat-> ($ Id.VSub_Dollar '$$') <'/'> 
                                                          (${ Id.VSub_Name darwin_base_archive) <-> (${ Id.VSub_Name darwin_arch)
                                                        )
                                                      }
                                                    )
                                                    (C {<func_extract_an_archive>} 
                                                      {
                                                        (DQ 
                                                          (command_sub
                                                            left_token: <Id.Left_Backtick '`'>
                                                            child: (C {<pwd>})
                                                          )
                                                        )
                                                      } {(DQ (${ Id.VSub_Name darwin_base_archive))}
                                                    )
                                                    (C {<cd>} 
                                                      {(DQ ($ Id.VSub_DollarName '$darwin_curdir'))}
                                                    )
                                                    (C {($ Id.VSub_DollarName '$RM')} 
                                                      {
                                                        (DQ <unfat-> ($ Id.VSub_Dollar '$$') <'/'> 
                                                          (${ Id.VSub_Name darwin_base_archive) <-> (${ Id.VSub_Name darwin_arch) <'/'> (${ Id.VSub_Name darwin_base_archive)
                                                        )
                                                      }
                                                    )
                                                  ]
                                                )
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:darwin_filelist)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_Backtick '`'>
                                                        child: 
                                                          (command.Pipeline
                                                            children: [
                                                              (C {<find>} 
                                                                {<unfat-> ($ Id.VSub_Dollar '$$')} {<-type>} {<f>} {<-name>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'>) <.o