(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PERF_DATA)
          op: assign_op.Equal
          rhs: {(perf.data)}
          spids: [10]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-ne)} {(0)} {(Id.Lit_RBracket ']')})
              terminator: (Token id:Id.Op_Semi val:';' span_id:25)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PERF_DATA)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [30]
                )
              ]
            )
          ]
          spids: [13 27]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-z)} {($ Id.VSub_DollarName '$PERF_BUILDID_DIR')} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:57)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PERF_BUILDID_DIR)
                  op: assign_op.Equal
                  rhs: 
                    {(word_part.TildeSub token:(Token id:Id.Lit_TildeLike val:'~' span_id:63)) 
                      (/.debug/)
                    }
                  spids: [62]
                )
              ]
            )
          ]
          spids: [48 59]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:PERF_BUILDID_DIR)
              op: assign_op.Equal
              rhs: {($ Id.VSub_DollarName '$PERF_BUILDID_DIR') (/)}
              spids: [73]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BUILDIDS)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:81)
                command_list: 
                  (command.CommandList
                    children: [(C {(mktemp)} {(/tmp/perf-archive-buildids.XXXXXX)})]
                  )
              )
            }
          spids: [80]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NOBUILDID)
          op: assign_op.Equal
          rhs: {(0000000000000000000000000000000000000000)}
          spids: [87]
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {(perf)} {(buildid-list)} {(-i)} {($ Id.VSub_DollarName '$PERF_DATA')} {(--with-hits)})
        (command.Simple
          words: [{(grep)} {(-v)} {(DQ ('^') ($ Id.VSub_DollarName '$NOBUILDID') (' '))}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:113)
              fd: -1
              arg_word: {($ Id.VSub_DollarName '$BUILDIDS')}
            )
          ]
        )
      ]
      negated: F
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-s)} {($ Id.VSub_DollarName '$BUILDIDS')} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:129)
            )
          ]
          action: [
            (C {(echo)} {(DQ ('perf archive: no build-ids found'))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [(C {(rm)} {($ Id.VSub_DollarName '$BUILDIDS')}) (C {(true)})]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:150)
              arg_word: {(1)}
            )
          ]
          spids: [117 131]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MANIFEST)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:158)
                command_list: 
                  (command.CommandList
                    children: [(C {(mktemp)} {(/tmp/perf-archive-manifest.XXXXXX)})]
                  )
              )
            }
          spids: [157]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PERF_BUILDID_LINKDIR)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:165)
                command_list: 
                  (command.CommandList
                    children: [(C {(readlink)} {(-f)} {($ Id.VSub_DollarName '$PERF_BUILDID_DIR')})]
                  )
              ) (/)
            }
          spids: [164]
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {(cut)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:' ' span_id:180))} {(-f)} {(1)} 
          {($ Id.VSub_DollarName '$BUILDIDS')}
        )
        (command.WhileUntil
          keyword: (Token id:Id.KW_While val:while span_id:192)
          cond: [
            (command.Sentence
              child: (C {(read)} {(build_id)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:198)
            )
          ]
          body: 
            (command.DoGroup
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:linkname)
                      op: assign_op.Equal
                      rhs: 
                        {($ Id.VSub_DollarName '$PERF_BUILDID_DIR') (.build-id/) 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:build_id span_id:207)
                            suffix_op: 
                              (suffix_op.Slice
                                begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)})
                                length: (arith_expr.ArithWord w:{(Id.Lit_Digits 2)})
                              )
                          ) (/) 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:build_id span_id:215)
                            suffix_op: 
                              (suffix_op.Slice
                                begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 2)})
                              )
                          )
                        }
                      spids: [203]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:filename)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:222)
                            command_list: 
                              (command.CommandList
                                children: [(C {(readlink)} {(-f)} {($ Id.VSub_DollarName '$linkname')})]
                              )
                          )
                        }
                      spids: [221]
                    )
                  ]
                )
                (command.Simple
                  words: [
                    {(echo)}
                    {
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:linkname span_id:234)
                        suffix_op: 
                          (suffix_op.Unary
                            op_id: Id.VOp1_Pound
                            arg_word: {($ Id.VSub_DollarName '$PERF_BUILDID_DIR')}
                          )
                      )
                    }
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_DGreat val:'>>' span_id:239)
                      fd: -1
                      arg_word: {($ Id.VSub_DollarName '$MANIFEST')}
                    )
                  ]
                )
                (command.Simple
                  words: [
                    {(echo)}
                    {
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:filename span_id:247)
                        suffix_op: 
                          (suffix_op.Unary
                            op_id: Id.VOp1_Pound
                            arg_word: {($ Id.VSub_DollarName '$PERF_BUILDID_LINKDIR')}
                          )
                      )
                    }
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_DGreat val:'>>' span_id:252)
                      fd: -1
                      arg_word: {($ Id.VSub_DollarName '$MANIFEST')}
                    )
                  ]
                )
              ]
            )
        )
      ]
      negated: F
    )
    (C {(tar)} {(cjf)} {($ Id.VSub_DollarName '$PERF_DATA') (.tar.bz2)} {(-C)} 
      {($ Id.VSub_DollarName '$PERF_BUILDID_DIR')} {(-T)} {($ Id.VSub_DollarName '$MANIFEST')}
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(rm)} {($ Id.VSub_DollarName '$MANIFEST')} {($ Id.VSub_DollarName '$BUILDIDS')})
        (C {(true)})
      ]
    )
    (C {(echo)} {(-e)} {(DQ ('Now please run:') (Id.Lit_Other '\\') (n))})
    (C {(echo)} {(-e)} 
      {
        (DQ (Id.Lit_Other '$') (' tar xvf ') ($ Id.VSub_DollarName '$PERF_DATA') 
          ('.tar.bz2 -C ~/.debug') (Id.Lit_Other '\\') (n)
        )
      }
    )
    (C {(echo)} {(DQ ("wherever you need to run 'perf report' on."))})
    (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:313) arg_word:{(0)})
  ]
)