(command.ShFunction
  name_tok: <translate_symnames>
  name: translate_symnames
  body: 
    (BraceGroup
      left: <Id.Lit_LBrace '{'>
      children: [
        (command.ShAssignment
          left: <Id.Lit_VarLike 'objfile='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'objfile='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'objfile='> name:objfile)
              op: assign_op.Equal
              rhs: {(DQ ($ Id.VSub_Number 1))}
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'cu_fname='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'cu_fname='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cu_fname='> name:cu_fname)
              op: assign_op.Equal
              rhs: {(DQ ($ Id.VSub_Number 2))}
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'cu_compdir='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'cu_compdir='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cu_compdir='> name:cu_compdir)
              op: assign_op.Equal
              rhs: {(DQ ($ Id.VSub_Number 3))}
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'BASE_TYPES_TRANSLATION='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'BASE_TYPES_TRANSLATION='>
              lhs: 
                (sh_lhs_expr.Name
                  left: <Id.Lit_VarLike 'BASE_TYPES_TRANSLATION='>
                  name: BASE_TYPES_TRANSLATION
                )
              op: assign_op.Equal
              rhs: 
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name BASE_TYPES_TRANSLATION>
                    var_name: BASE_TYPES_TRANSLATION
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VTest_ColonHyphen _>
                        arg_word: 
                          {
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <dirname>
                                  more_env: []
                                  words: [{<dirname>} {($ Id.VSub_Number 0)}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            ) <Id.Lit_Slash '/'> <..> <Id.Lit_Slash '/'> <src> <Id.Lit_Slash '/'> <base-types-translation>
                          }
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'signpost_frag_regexp='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'signpost_frag_regexp='>
              lhs: 
                (sh_lhs_expr.Name
                  left: <Id.Lit_VarLike 'signpost_frag_regexp='>
                  name: signpost_frag_regexp
                )
              op: assign_op.Equal
              rhs: {(DQ <'__ARG[0-9]+_|__PTR_|__REF_|__RR_|__ARR[0-9]+_|__FUN_FROM_|__FUN_TO_|__VA_'>)}
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'type_pred_regexp='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'type_pred_regexp='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type_pred_regexp='> name:type_pred_regexp)
              op: assign_op.Equal
              rhs: {(DQ <'__uniqtype__|'> (${ Id.VSub_Name signpost_frag_regexp))}
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'type_succ_regexp='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'type_succ_regexp='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type_succ_regexp='> name:type_succ_regexp)
              op: assign_op.Equal
              rhs: 
                {
                  (DQ (${ Id.VSub_Name signpost_frag_regexp) <'|'> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\$'>
                      ch: '$'
                    )
                  )
                }
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'sed_program='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'sed_program='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sed_program='> name:sed_program)
              op: assign_op.Equal
              rhs: {(DQ )}
            )
          ]
          redirects: []
        )
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [
            {<echo>}
            {(${ Id.VSub_Name BASE_TYPES_TRANSLATION)}
            {(DQ ($ Id.VSub_DollarName objfile))}
          ]
          redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          do_fork: T
        )
        (command.WhileUntil
          keyword: <Id.KW_While while>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <read>
                      more_env: []
                      words: [{<read>} {<c_base>} {<canon_base>}]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          body: 
            (command.DoGroup
              left: <Id.KW_Do do>
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'sed_program='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'sed_program='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sed_program='> name:sed_program)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ (${ Id.VSub_Name sed_program) <'; s/('> 
                            (${ Id.VSub_Name type_pred_regexp) <')'> (${ Id.VSub_Name c_base) <'('> (${ Id.VSub_Name type_succ_regexp) <')/'> <Id.Lit_BadBackslash '\\'> 
                            <1> (${ Id.VSub_Name canon_base) <Id.Lit_BadBackslash '\\'> <'2/g'>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              right: <Id.KW_Done done>
            )
          redirects: [
            (Redir
              op: <Id.Redir_TLess '<<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                {
                  (DQ 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <Id.Left_DollarBrace '${'>
                          more_env: []
                          words: [
                            {(${ Id.VSub_Name BASE_TYPES_TRANSLATION)}
                            {(DQ ($ Id.VSub_DollarName objfile))}
                            {(DQ ($ Id.VSub_DollarName cu_fname))}
                            {(DQ ($ Id.VSub_DollarName cu_compdir))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
            )
          ]
        )
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {(DQ <'sed program is '> ($ Id.VSub_DollarName sed_program))}]
          redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          do_fork: T
        )
        (command.If
          if_kw: <Id.KW_If if>
          arms: [
            (IfArm
              keyword: <Id.KW_If if>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          left: <Id.KW_DLeftBracket '[['>
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: 
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Pipeline
                                          children: [
                                            (command.Simple
                                              blame_tok: <echo>
                                              more_env: []
                                              words: [{<echo>} {(DQ ($ Id.VSub_DollarName sed_program))}]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.Simple
                                              blame_tok: <tr>
                                              more_env: []
                                              words: [{<tr>} {<-d>} {(SQ <'[:blank:]'>)}]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: [<Id.Op_Pipe _>]
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                            )
                          right: <Id.Lit_DRightBracket ']]'>
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              then_kw: <Id.KW_Then then>
              action: [
                (command.Pipeline
                  children: [
                    (command.Simple
                      blame_tok: <sed>
                      more_env: []
                      words: [{<sed>} {<-r>} {(DQ ($ Id.VSub_DollarName sed_program))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <sed>
                      more_env: []
                      words: [{<sed>} {<-r>} {(DQ ($ Id.VSub_DollarName sed_program))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <sed>
                      more_env: []
                      words: [{<sed>} {<-r>} {(DQ ($ Id.VSub_DollarName sed_program))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <sed>
                      more_env: []
                      words: [{<sed>} {<-r>} {(DQ ($ Id.VSub_DollarName sed_program))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <sed>
                      more_env: []
                      words: [{<sed>} {<-r>} {(DQ ($ Id.VSub_DollarName sed_program))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <sed>
                      more_env: []
                      words: [{<sed>} {<-r>} {(DQ ($ Id.VSub_DollarName sed_program))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <sed>
                      more_env: []
                      words: [{<sed>} {<-r>} {(DQ ($ Id.VSub_DollarName sed_program))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <sed>
                      more_env: []
                      words: [{<sed>} {<-r>} {(DQ ($ Id.VSub_DollarName sed_program))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <sed>
                      more_env: []
                      words: [{<sed>} {<-r>} {(DQ ($ Id.VSub_DollarName sed_program))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <sed>
                      more_env: []
                      words: [{<sed>} {<-r>} {(DQ ($ Id.VSub_DollarName sed_program))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <sed>
                      more_env: []
                      words: [{<sed>} {<-r>} {(DQ ($ Id.VSub_DollarName sed_program))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [
                    <Id.Op_Pipe _>
                    <Id.Op_Pipe _>
                    <Id.Op_Pipe _>
                    <Id.Op_Pipe _>
                    <Id.Op_Pipe _>
                    <Id.Op_Pipe _>
                    <Id.Op_Pipe _>
                    <Id.Op_Pipe _>
                    <Id.Op_Pipe _>
                    <Id.Op_Pipe _>
                  ]
                )
              ]
              spids: [195 226]
            )
          ]
          else_kw: <Id.KW_Else else>
          else_action: [
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: []
              do_fork: T
            )
          ]
          fi_kw: <Id.KW_Fi fi>
          redirects: []
        )
      ]
      redirects: []
      right: <Id.Lit_RBrace '}'>
    )
)