(command.CommandList
  children: [
    (command.ShFunction
      name: escape_eregexp
      body: 
        (BraceGroup
          children: [
            (C {<sed>} {<-r>} 
              {(SQ <'s/(\\*|\\.|\\[|\\^|\\$|\\[|\\]|\\||\\{|\\}|\\?|\\+|\\(|\\)|\\\\)/\\\\\\1/g'>)}
            )
          ]
        )
    )
    (command.ShFunction
      name: escapefn_eregexp
      body: 
        (BraceGroup
          children: [
            (command.Pipeline
              children: [(C {<echo>} {(DQ ($ Id.VSub_Number '$1'))}) (C {<escape_eregexp>})]
              negated: F
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:line_regexp)
          op: assign_op.Equal
          rhs: {(SQ <'^[0-9a-f]* <([^>]*)>'>)}
          spids: [68]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:alloc_site_regexp)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name line_regexp) <'.*'>) (SQ <'call.*alloc'>)}
          spids: [73]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:allocation_sites)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<objdump>} {<--prefix-addresses>} {<-d>} {(DQ ($ Id.VSub_Number '$1'))})
                        (C {<egrep>} {(DQ ($ Id.VSub_DollarName '$alloc_site_regexp'))})
                        (C {<sed>} {<-r>} 
                          {
                            (DQ <'s/'> (${ Id.VSub_Name alloc_site_regexp) <'.*/'> 
                              <Id.Lit_BadBackslash '\\'> <'1/'>
                            )
                          }
                        )
                      ]
                      negated: F
                    )
                )
              )
            }
          spids: [84]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:objdump_output)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<objdump>} {<--prefix-addresses>} {<-dS>} {(DQ ($ Id.VSub_Number '$1'))})
                )
              )
            }
          spids: [134]
        )
      ]
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Sentence
              child: (C {<read>} {<sym>} {<offset>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:regexp)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'<'> 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<escapefn_eregexp>} {(DQ ($ Id.VSub_DollarName '$sym'))})
                        ) <Id.Lit_BadBackslash '\\'> <'+'> 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<escapefn_eregexp>} {(DQ ($ Id.VSub_DollarName '$offset'))})
                        ) <'>'>
                      )
                    }
                  spids: [172]
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ <'regexp: '> ($ Id.VSub_DollarName '$regexp'))}]
              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:context)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<echo>} {(DQ ($ Id.VSub_DollarName '$objdump_output'))})
                                (C {<egrep>} {<-B200>} {(DQ ($ Id.VSub_DollarName '$regexp'))})
                              ]
                              negated: F
                            )
                        )
                      )
                    }
                  spids: [217]
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ <'context: '> ($ Id.VSub_DollarName '$context'))}]
              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:source)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<echo>} {(DQ ($ Id.VSub_DollarName '$context'))})
                                (C {<egrep>} {<-v>} {(DQ ($ Id.VSub_DollarName '$line_regexp'))})
                                (C {<tr>} {(SQ <'\\n'>)} {(SQ <' '>)})
                              ]
                              negated: F
                            )
                        )
                      )
                    }
                  spids: [259]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:token)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<echo>} {(DQ ($ Id.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
                            )
                        )
                      )
                    }
                  spids: [306]
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ <'token: '> ($ Id.VSub_DollarName '$token'))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (C {<echo>} 
              {
                (DQ <'Guessed that site <'> (${ Id.VSub_Name sym) <'+'> (${ Id.VSub_Name offset) 
                  <'> allocated: '> (${ Id.VSub_Name token)
                )
              }
            )
          ]
        )
      redirects: [
        (redir
          op: <Id.Redir_TLess '<<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<echo>} {(DQ ($ Id.VSub_DollarName '$allocation_sites'))})
                        (C {<sed>} {<-r>} {(SQ <'s/\\+(0x[0-9a-f]*)$/ \\1/'>)})
                      ]
                      negated: F
                    )
                )
              )
            }
        )
      ]
    )
  ]
)