(command.CommandList
  children: [
    (command.FuncDef
      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
            )
          ]
          spids: [12]
        )
      spids: [7 11]
    )
    (command.FuncDef
      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
            )
          ]
          spids: [61]
        )
      spids: [56 60]
    )
    (command.FuncDef
      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.EscapedLiteralPart
                        token: <Lit_EscapedChar '\\\\'>
                      ) ('f|') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (")/printf '%06d' '") 
                      (word_part.EscapedLiteralPart
                        token: <Lit_EscapedChar '\\\\'>
                      ) ("1'; printf '") (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) ("2'/e")
                    )
                  }
                )
                (C {(recover_lines)})
              ]
              negated: F
            )
          ]
          spids: [92]
        )
      spids: [87 91]
    )
    (command.FuncDef
      name: use_src_realpaths
      body: 
        (command.BraceGroup
          children: [
            (command.WhileUntil
              keyword: <KW_While while>
              cond: [
                (command.Sentence
                  child: 
                    (command.SimpleCommand
                      words: [
                        {(read)}
                        {(-r)}
                        {(alloc_sourcefile)}
                        {(alloc_sourceline)}
                        {(alloc_fun)}
                        {(alloc_rest)}
                      ]
                      more_env: [
                        (env_pair
                          name: IFS
                          val: 
                            {
                              (word_part.SingleQuotedPart
                                left: <Left_DollarSingleQuote "$'">
                                tokens: [<Char_OneChar '\\t'>]
                                spids: [149 151]
                              )
                            }
                          spids: [148]
                        )
                      ]
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.SimpleCommand
                      words: [{(echo)} {(DQ ('Saw alloc_rest: ') ($ VSub_DollarName '$alloc_rest'))}]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})]
                    )
                    (C {(echo)} 
                      {
                        (DQ 
                          (word_part.CommandSubPart
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(readlink)} {(-f)} {($ VSub_DollarName '$alloc_sourcefile')})
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [183 190]
                          )
                        ) 
                        (word_part.SingleQuotedPart
                          left: <Left_DollarSingleQuote "$'">
                          tokens: [<Char_OneChar '\\t'>]
                          spids: [192 194]
                        ) (DQ ($ VSub_DollarName '$alloc_sourceline')) 
                        (word_part.SingleQuotedPart
                          left: <Left_DollarSingleQuote "$'">
                          tokens: [<Char_OneChar '\\t'>]
                          spids: [198 200]
                        ) (DQ ($ VSub_DollarName '$alloc_fun')) 
                        (word_part.SingleQuotedPart
                          left: <Left_DollarSingleQuote "$'">
                          tokens: [<Char_OneChar '\\t'>]
                          spids: [204 206]
                        ) (DQ ($ VSub_DollarName '$alloc_rest'))
                      }
                    )
                  ]
                  spids: [166 212]
                )
            )
          ]
          spids: [143]
        )
      spids: [138 142]
    )
    (C {(.)} 
      {
        (word_part.CommandSubPart
          command_list: (command.CommandList children:[(C {(dirname)} {($ VSub_Number '$0')})])
          left_token: <Left_CommandSub '$('>
          spids: [222 226]
        ) (/debug-funcs.sh)
      }
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:our_name spids:[230])
          op: Equal
          rhs: 
            {
              (DQ 
                (word_part.CommandSubPart
                  command_list: 
                    (command.CommandList
                      children: [(C {(basename)} {(DQ ($ VSub_Number '$0'))})]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [232 238]
                )
              )
            }
          spids: [230]
        )
      ]
      spids: [230]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:our_name_rewritten spids:[241])
          op: Equal
          rhs: 
            {
              (DQ 
                (word_part.CommandSubPart
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Pipeline
                          children: [
                            (C {(echo)} {(DQ ($ VSub_DollarName '$our_name'))})
                            (C {(sed)} {(SQ <'s/gather-\\(.*\\)\\.sh/gather-\\1/'>)})
                          ]
                          negated: F
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [243 259]
                )
              )
            }
          spids: [241]
        )
      ]
      spids: [241]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:all_obj_allocs_file spids:[263])
          op: Equal
          rhs: {(DQ ($ VSub_Number '$1'))}
          spids: [263]
        )
      ]
      spids: [263]
    )
    (command.Pipeline
      children: [
        (C {(cat)} {(DQ ($ VSub_DollarName '$all_obj_allocs_file'))})
        (C {(cut)} {(-f1)})
        (C {(sort)})
        (C {(uniq)})
        (command.WhileUntil
          keyword: <KW_While while>
          cond: [(command.Sentence child:(C {(read)} {(obj)} {(rest)}) terminator:<Op_Semi ';'>)]
          body: 
            (command.DoGroup
              children: [
                (command.SimpleCommand
                  words: [
                    {(echo)}
                    {(DQ ('Saw line ') ($ VSub_DollarName '$obj') (' ') ($ VSub_DollarName '$rest'))}
                  ]
                  redirects: [(redir.Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})]
                )
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:all_cus_info spids:[324])
                      op: Equal
                      rhs: 
                        {
                          (DQ 
                            (word_part.CommandSubPart
                              command_list: 
                                (command.CommandList
                                  children: [(C {(get_cu_info)} {(DQ ($ VSub_DollarName '$obj'))})]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [326 334]
                            )
                          )
                        }
                      spids: [324]
                    )
                  ]
                  spids: [324]
                )
                (command.Pipeline
                  children: [
                    (C {(echo)} {(DQ ($ VSub_DollarName '$all_cus_info'))})
                    (command.WhileUntil
                      keyword: <KW_While while>
                      cond: [(command.Sentence child:(C {(read_cu_info)}) terminator:<Op_Semi ';'>)]
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Case
                              to_match: {(DQ ($ VSub_DollarName '$cu_language_num'))}
                              arms: [
                                (case_arm
                                  pat_list: [{(1)} {(2)} {(12)}]
                                  action: [
                                    (C 
                                      {
                                        (word_part.CommandSubPart
                                          command_list: 
                                            (command.CommandList
                                              children: [(C {(dirname)} {(DQ ($ VSub_Number '$0'))})]
                                            )
                                          left_token: <Left_CommandSub '$('>
                                          spids: [377 383]
                                        ) (/lang/c/bin/c-) (DQ ($ VSub_DollarName '$our_name_rewritten'))
                                      } {(DQ ($ VSub_DollarName '$cu_sourcepath'))} {(DQ ($ VSub_DollarName '$obj'))} 
                                      {(DQ ($ VSub_DollarName '$cu_fname'))} {(DQ ($ VSub_DollarName '$cu_compdir'))}
                                    )
                                  ]
                                  spids: [365 371 406 16777215]
                                )
                                (case_arm
                                  pat_list: [{(Lit_Other '*')}]
                                  action: [
                                    (command.SimpleCommand
                                      words: [
                                        {(echo)}
                                        {
                                          (DQ 
                                            (
'Warning: could not gather source-level allocs for unknown language: '
                                            ) ($ VSub_DollarName '$cu_language_fullstr') (' (') ($ VSub_DollarName '$cu_language_num') (', ') 
                                            (word_part.CommandSubPart
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (command.Pipeline
                                                      children: [
                                                        (C {(echo)} {(-n)} 
                                                          {
                                                            (DQ 
                                                              ($ VSub_DollarName 
'$cu_language_fullstr'
                                                              )
                                                            )
                                                          }
                                                        )
                                                        (C {(hd)})
                                                      ]
                                                      negated: F
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [425 439]
                                            ) (')')
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir.Redir
                                          op: <Redir_GreatAnd '1>&'>
                                          fd: 1
                                          arg_word: {(2)}
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [409 411 447 16777215]
                                )
                              ]
                              spids: [356 362 450]
                            )
                          ]
                          spids: [353 453]
                        )
                    )
                  ]
                  negated: F
                )
              ]
              spids: [308 455]
            )
        )
        (C {(pad_numbers)})
        (C {(sort)} 
          {(-t) 
            (word_part.SingleQuotedPart
              left: <Left_DollarSingleQuote "$'">
              tokens: [<Char_OneChar '\\t'>]
              spids: [466 468]
            )
          } {(-k1)} {(-k2)}
        )
        (C {(uniq)})
      ]
      negated: F
    )
  ]
)