(command.CommandList
  children: [
    (command.ShFunction
      name: fields_as_lines
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {(tr)} {(SQ (Token id:Id.Lit_Chars val:'\\n' span_id:18))} 
                  {(SQ (Token id:Id.Lit_Chars val:'\\f' span_id:22))}
                )
                (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/\\f/\\f\\n/g' span_id:32))})
                (C {(tr)} {(SQ (Token id:Id.Lit_Chars val:'\\t' span_id:42))} 
                  {(SQ (Token id:Id.Lit_Chars val:'\\n' span_id:46))}
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: recover_lines
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {(tr)} {(SQ (Token id:Id.Lit_Chars val:'\\n' span_id:67))} 
                  {(SQ (Token id:Id.Lit_Chars val:'\\t' span_id:71))}
                )
                (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/\\f\\t/\\n/g' span_id:81))})
              ]
              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: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:111)
                      ) ('f|') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:113)) 
                      (")/printf '%06d' '") (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\\\' span_id:115)) ("1'; printf '") 
                      (word_part.EscapedLiteral
                        token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:117)
                      ) ("2'/e")
                    )
                  }
                )
                (C {(recover_lines)})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: use_src_realpaths
      body: 
        (command.BraceGroup
          children: [
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:146)
              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: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:149)
                                tokens: [(Token id:Id.Char_OneChar val:'\\t' span_id:150)]
                              )
                            }
                          spids: [148]
                        )
                      ]
                    )
                  terminator: (Token id:Id.Op_Semi val:';' span_id:164)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.Simple
                      words: [{(echo)} {(DQ ('Saw alloc_rest: ') ($ Id.VSub_DollarName '$alloc_rest'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:176)
                          fd: 1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (C {(echo)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:183)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(readlink)} {(-f)} {($ Id.VSub_DollarName '$alloc_sourcefile')})
                                ]
                              )
                          )
                        ) 
                        (single_quoted
                          left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:192)
                          tokens: [(Token id:Id.Char_OneChar val:'\\t' span_id:193)]
                        ) (DQ ($ Id.VSub_DollarName '$alloc_sourceline')) 
                        (single_quoted
                          left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:198)
                          tokens: [(Token id:Id.Char_OneChar val:'\\t' span_id:199)]
                        ) (DQ ($ Id.VSub_DollarName '$alloc_fun')) 
                        (single_quoted
                          left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:204)
                          tokens: [(Token id:Id.Char_OneChar val:'\\t' span_id:205)]
                        ) (DQ ($ Id.VSub_DollarName '$alloc_rest'))
                      }
                    )
                  ]
                )
            )
          ]
        )
    )
    (C {(.)} 
      {
        (command_sub
          left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:222)
          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: (Token id:Id.Left_DollarParen val:'$(' span_id:232)
                  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: (Token id:Id.Left_DollarParen val:'$(' span_id:243)
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Pipeline
                          children: [
                            (C {(echo)} {(DQ ($ Id.VSub_DollarName '$our_name'))})
                            (C {(sed)} 
                              {
                                (SQ 
                                  (Token
                                    id: Id.Lit_Chars
                                    val: 's/gather-\\(.*\\)\\.sh/gather-\\1/'
                                    span_id: 256
                                  )
                                )
                              }
                            )
                          ]
                          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: (Token id:Id.KW_While val:while span_id:299)
          cond: [
            (command.Sentence
              child: (C {(read)} {(obj)} {(rest)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:306)
            )
          ]
          body: 
            (command.DoGroup
              children: [
                (command.Simple
                  words: [
                    {(echo)}
                    {
                      (DQ ('Saw line ') ($ Id.VSub_DollarName '$obj') (' ') 
                        ($ Id.VSub_DollarName '$rest')
                      )
                    }
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:320)
                      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: (Token id:Id.Left_DollarParen val:'$(' span_id:326)
                              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: (Token id:Id.KW_While val:while span_id:348)
                      cond: [
                        (command.Sentence
                          child: (C {(read_cu_info)})
                          terminator: (Token id:Id.Op_Semi val:';' span_id:351)
                        )
                      ]
                      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: 
                                            (Token
                                              id: Id.Left_DollarParen
                                              val: '$('
                                              span_id: 377
                                            )
                                          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: 
                                                (Token
                                                  id: Id.Left_DollarParen
                                                  val: '$('
                                                  span_id: 425
                                                )
                                              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: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:443)
                                          fd: 1
                                          arg_word: {(2)}
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [409 411 447 -1]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  negated: F
                )
              ]
            )
        )
        (C {(pad_numbers)})
        (C {(sort)} 
          {(-t) 
            (single_quoted
              left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:466)
              tokens: [(Token id:Id.Char_OneChar val:'\\t' span_id:467)]
            )
          } {(-k1)} {(-k2)}
        )
        (C {(uniq)})
      ]
      negated: F
    )
  ]
)