(command.CommandList
  children: [
    (command.ShFunction
      name: fields_as_lines
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {<tr>} {(SQ <'\\n'>)} {(SQ <'\\f'>)})
                (C {<sed>} {(SQ <'s/\\f/\\f\\n/g'>)})
                (C {<tr>} {(SQ <'\\t'>)} {(SQ <'\\n'>)})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: recover_lines
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [(C {<tr>} {(SQ <'\\n'>)} {(SQ <'\\t'>)}) (C {<sed>} {(SQ <'s/\\f\\t/\\n/g'>)})]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: pad_numbers
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {<fields_as_lines>})
                (C {<sed>} {<-r>} 
                  {
                    (DQ <'s/^([[:space:]]*[0-9]+[[:space:]]*)('> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\\\'>
                      ) <'f|'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <")/printf '%06d' '"> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\\\'>
                      ) <"1'; printf '"> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <"2'/e">
                    )
                  }
                )
                (C {<recover_lines>})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: use_src_realpaths
      body: 
        (command.BraceGroup
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: [
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [
                        {<read>}
                        {<-r>}
                        {<alloc_sourcefile>}
                        {<alloc_sourceline>}
                        {<alloc_fun>}
                        {<alloc_rest>}
                      ]
                      more_env: [
                        (env_pair
                          name: IFS
                          val: 
                            {
                              (single_quoted
                                left: <Id.Left_SingleQuoteC "$'">
                                tokens: [<Id.Char_OneChar '\\t'>]
                              )
                            }
                          spids: [148]
                        )
                      ]
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'Saw alloc_rest: '> ($ Id.VSub_DollarName '$alloc_rest'))}]
                      redirects: [(redir.Redir op:<Id.Redir_GreatAnd '1>&'> fd:1 arg_word:{<2>})]
                    )
                    (C {<echo>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {<readlink>} {<-f>} {($ Id.VSub_DollarName '$alloc_sourcefile')})
                                ]
                              )
                          )
                        ) (single_quoted left:<Id.Left_SingleQuoteC "$'"> tokens:[<Id.Char_OneChar '\\t'>]) 
                        (DQ ($ Id.VSub_DollarName '$alloc_sourceline')) (single_quoted left:<Id.Left_SingleQuoteC "$'"> tokens:[<Id.Char_OneChar '\\t'>]) 
                        (DQ ($ Id.VSub_DollarName '$alloc_fun')) (single_quoted left:<Id.Left_SingleQuoteC "$'"> tokens:[<Id.Char_OneChar '\\t'>]) 
                        (DQ ($ Id.VSub_DollarName '$alloc_rest'))
                      }
                    )
                  ]
                )
            )
          ]
        )
    )
    (C {<.>} 
      {
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          command_list: (command.CommandList children:[(C {<dirname>} {($ Id.VSub_Number '$0')})])
        ) </debug-funcs.sh>
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:our_name)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  command_list: 
                    (command.CommandList
                      children: [(C {<basename>} {(DQ ($ Id.VSub_Number '$0'))})]
                    )
                )
              )
            }
          spids: [230]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:our_name_rewritten)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Pipeline
                          children: [
                            (C {<echo>} {(DQ ($ Id.VSub_DollarName '$our_name'))})
                            (C {<sed>} {(SQ <'s/gather-\\(.*\\)\\.sh/gather-\\1/'>)})
                          ]
                          negated: F
                        )
                      ]
                    )
                )
              )
            }
          spids: [241]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:all_obj_allocs_file)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number '$1'))}
          spids: [263]
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {<cat>} {(DQ ($ Id.VSub_DollarName '$all_obj_allocs_file'))})
        (C {<cut>} {<-f1>})
        (C {<sort>})
        (C {<uniq>})
        (command.WhileUntil
          keyword: <Id.KW_While while>
          cond: [(command.Sentence child:(C {<read>} {<obj>} {<rest>}) terminator:<Id.Op_Semi _>)]
          body: 
            (command.DoGroup
              children: [
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (DQ <'Saw line '> ($ Id.VSub_DollarName '$obj') <' '> 
                        ($ Id.VSub_DollarName '$rest')
                      )
                    }
                  ]
                  redirects: [(redir.Redir op:<Id.Redir_GreatAnd '1>&'> fd:1 arg_word:{<2>})]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:all_cus_info)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              command_list: 
                                (command.CommandList
                                  children: [(C {<get_cu_info>} {(DQ ($ Id.VSub_DollarName '$obj'))})]
                                )
                            )
                          )
                        }
                      spids: [324]
                    )
                  ]
                )
                (command.Pipeline
                  children: [
                    (C {<echo>} {(DQ ($ Id.VSub_DollarName '$all_cus_info'))})
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: [(command.Sentence child:(C {<read_cu_info>}) terminator:<Id.Op_Semi _>)]
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Case
                              to_match: {(DQ ($ Id.VSub_DollarName '$cu_language_num'))}
                              arms: [
                                (case_arm
                                  pat_list: [{<1>} {<2>} {<12>}]
                                  action: [
                                    (C 
                                      {
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          command_list: 
                                            (command.CommandList
                                              children: [(C {<dirname>} {(DQ ($ Id.VSub_Number '$0'))})]
                                            )
                                        ) </lang/c/bin/c-> (DQ ($ Id.VSub_DollarName '$our_name_rewritten'))
                                      } {(DQ ($ Id.VSub_DollarName '$cu_sourcepath'))} {(DQ ($ Id.VSub_DollarName '$obj'))} 
                                      {(DQ ($ Id.VSub_DollarName '$cu_fname'))} {(DQ ($ Id.VSub_DollarName '$cu_compdir'))}
                                    )
                                  ]
                                  spids: [365 371 406 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [
                                    (command.Simple
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ 
                                            <
'Warning: could not gather source-level allocs for unknown language: '
                                            > ($ Id.VSub_DollarName '$cu_language_fullstr') <' ('> ($ Id.VSub_DollarName '$cu_language_num') <', '> 
                                            (command_sub
                                              left_token: <Id.Left_DollarParen '$('>
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (command.Pipeline
                                                      children: [
                                                        (C {<echo>} {<-n>} 
                                                          {
                                                            (DQ 
                                                              ($ Id.VSub_DollarName 
'$cu_language_fullstr'
                                                              )
                                                            )
                                                          }
                                                        )
                                                        (C {<hd>})
                                                      ]
                                                      negated: F
                                                    )
                                                  ]
                                                )
                                            ) <')'>
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir.Redir
                                          op: <Id.Redir_GreatAnd '1>&'>
                                          fd: 1
                                          arg_word: {<2>}
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [409 411 447 -1]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  negated: F
                )
              ]
            )
        )
        (C {<pad_numbers>})
        (C {<sort>} 
          {<-t> (single_quoted left:<Id.Left_SingleQuoteC "$'"> tokens:[<Id.Char_OneChar '\\t'>])} {<-k1>} {<-k2>}
        )
        (C {<uniq>})
      ]
      negated: F
    )
  ]
)