(command.CommandList
  children: [
    (command.ShFunction
      name: fields_as_lines
      body: 
        (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: 
        (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: 
        (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: 
        (BraceGroup
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (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_CSingleQuote '$\''>
                                    tokens: [<Id.Char_OneChar '\\t'>]
                                    multiline: F
                                  )
                                }
                              spids: [148]
                            )
                          ]
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'Saw alloc_rest: '> ($ Id.VSub_DollarName '$alloc_rest'))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_GreatAnd '1>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<2>}
                        )
                      ]
                      do_fork: T
                    )
                    (C {<echo>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<readlink>} {<-f>} {($ Id.VSub_DollarName '$alloc_sourcefile')})
                          )
                        ) (single_quoted left:<Id.Left_CSingleQuote '$\''> tokens:[<Id.Char_OneChar '\\t'>] multiline:F) 
                        (DQ ($ Id.VSub_DollarName '$alloc_sourceline')) (single_quoted left:<Id.Left_CSingleQuote '$\''> tokens:[<Id.Char_OneChar '\\t'>] multiline:F) 
                        (DQ ($ Id.VSub_DollarName '$alloc_fun')) (single_quoted left:<Id.Left_CSingleQuote '$\''> tokens:[<Id.Char_OneChar '\\t'>] multiline:F) 
                        (DQ ($ Id.VSub_DollarName '$alloc_rest'))
                      }
                    )
                  ]
                )
            )
          ]
        )
    )
    (C {<.>} 
      {
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          child: (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 '$('>
                  child: (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 '$('>
                  child: 
                    (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: 
            (condition.Shell
              commands: [
                (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 op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (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 '$('>
                              child: (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: 
                        (condition.Shell
                          commands: [
                            (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 '$('>
                                          child: (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 '$('>
                                              child: 
                                                (command.Pipeline
                                                  children: [
                                                    (C {<echo>} {<-n>} 
                                                      {
                                                        (DQ 
                                                          ($ Id.VSub_DollarName 
'$cu_language_fullstr'
                                                          )
                                                        )
                                                      }
                                                    )
                                                    (C {<hd>})
                                                  ]
                                                  negated: F
                                                )
                                            ) <')'>
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '1>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                  spids: [409 411 447 -1]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  negated: F
                )
              ]
            )
        )
        (C {<pad_numbers>})
        (C {<sort>} 
          {<-t> 
            (single_quoted
              left: <Id.Left_CSingleQuote '$\''>
              tokens: [<Id.Char_OneChar '\\t'>]
              multiline: F
            )
          } {<-k1>} {<-k2>}
        )
        (C {<uniq>})
      ]
      negated: F
    )
  ]
)