(command.CommandList
  children: [
    (command.ShFunction
      name: escape_eregexp
      body: 
        (command.BraceGroup
          children: [
            (C {(sed)} {(-r)} 
              {(SQ <'s/(\\*|\\.|\\[|\\^|\\$|\\[|\\]|\\||\\{|\\}|\\?|\\+|\\(|\\)|\\\\)/\\\\\\1/g'>)}
            )
          ]
        )
    )
    (command.ShFunction
      name: escapefn_eregexp
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [(C {(echo)} {(DQ ($ VSub_Number '$1'))}) (C {(escape_eregexp)})]
              negated: F
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:line_regexp)
          op: Equal
          rhs: {(SQ <'^[0-9a-f]* <([^>]*)>'>)}
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:alloc_site_regexp)
          op: Equal
          rhs: {(DQ (${ VSub_Name line_regexp) ('.*')) (SQ <'call.*alloc'>)}
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:allocation_sites)
          op: Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Left_DollarParen '$('>
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Pipeline
                          children: [
                            (C {(objdump)} {(--prefix-addresses)} {(-d)} {(DQ ($ VSub_Number '$1'))})
                            (C {(egrep)} {(DQ ($ VSub_DollarName '$alloc_site_regexp'))})
                            (C {(sed)} {(-r)} 
                              {
                                (DQ (s/) (${ VSub_Name alloc_site_regexp) ('.*/') (Lit_Other '\\') (1/))
                              }
                            )
                          ]
                          negated: F
                        )
                      ]
                    )
                )
              )
            }
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:objdump_output)
          op: Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Left_DollarParen '$('>
                  command_list: 
                    (command.CommandList
                      children: [
                        (C {(objdump)} {(--prefix-addresses)} {(-dS)} {(DQ ($ VSub_Number '$1'))})
                      ]
                    )
                )
              )
            }
        )
      ]
    )
    (command.WhileUntil
      keyword: <KW_While while>
      cond: [(command.Sentence child:(C {(read)} {(sym)} {(offset)}) terminator:<Op_Semi ';'>)]
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:regexp)
                  op: Equal
                  rhs: 
                    {
                      (DQ ('<') 
                        (command_sub
                          left_token: <Left_DollarParen '$('>
                          command_list: 
                            (command.CommandList
                              children: [(C {(escapefn_eregexp)} {(DQ ($ VSub_DollarName '$sym'))})]
                            )
                        ) (Lit_Other '\\') ('+') 
                        (command_sub
                          left_token: <Left_DollarParen '$('>
                          command_list: 
                            (command.CommandList
                              children: [(C {(escapefn_eregexp)} {(DQ ($ VSub_DollarName '$offset'))})]
                            )
                        ) ('>')
                      )
                    }
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(DQ ('regexp: ') ($ VSub_DollarName '$regexp'))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:context)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Left_DollarParen '$('>
                          command_list: 
                            (command.CommandList
                              children: [
                                (command.Pipeline
                                  children: [
                                    (C {(echo)} {(DQ ($ VSub_DollarName '$objdump_output'))})
                                    (C {(egrep)} {(-B200)} {(DQ ($ VSub_DollarName '$regexp'))})
                                  ]
                                  negated: F
                                )
                              ]
                            )
                        )
                      )
                    }
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(DQ ('context: ') ($ VSub_DollarName '$context'))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:source)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Left_DollarParen '$('>
                          command_list: 
                            (command.CommandList
                              children: [
                                (command.Pipeline
                                  children: [
                                    (C {(echo)} {(DQ ($ VSub_DollarName '$context'))})
                                    (C {(egrep)} {(-v)} {(DQ ($ VSub_DollarName '$line_regexp'))})
                                    (C {(tr)} {(SQ <'\\n'>)} {(SQ <' '>)})
                                  ]
                                  negated: F
                                )
                              ]
                            )
                        )
                      )
                    }
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:token)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Left_DollarParen '$('>
                          command_list: 
                            (command.CommandList
                              children: [
                                (command.Pipeline
                                  children: [
                                    (C {(echo)} {(DQ ($ VSub_DollarName '$source'))})
                                    (C {(egrep)} {(SQ <'(new|sizeof)([^0-9a-z_]|$)'>)})
                                    (C {(sed)} {(-r)} {(SQ <'s/.*(new|sizeof)([^0-9a-zA-Z_]|$)/\\2/'>)})
                                    (C {(sed)} {(-r)} 
                                      {(SQ <'s/[^0-9a-zA-Z_]*([a-zA-Z0-9_ \\*]+).*/\\1/'>)}
                                    )
                                  ]
                                  negated: F
                                )
                              ]
                            )
                        )
                      )
                    }
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(DQ ('token: ') ($ VSub_DollarName '$token'))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})]
            )
            (C {(echo)} 
              {
                (DQ ('Guessed that site <') (${ VSub_Name sym) ('+') (${ VSub_Name offset) 
                  ('> allocated: ') (${ VSub_Name token)
                )
              }
            )
          ]
        )
      redirects: [
        (redir.Redir
          op: <Redir_TLess '<<<'>
          fd: 16777215
          arg_word: 
            {
              (DQ 
                (command_sub
                  left_token: <Left_DollarParen '$('>
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Pipeline
                          children: [
                            (C {(echo)} {(DQ ($ VSub_DollarName '$allocation_sites'))})
                            (C {(sed)} {(-r)} {(SQ <'s/\\+(0x[0-9a-f]*)$/ \\1/'>)})
                          ]
                          negated: F
                        )
                      ]
                    )
                )
              )
            }
        )
      ]
    )
  ]
)