(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tracing)
          op: Equal
          rhs: {(/sys/kernel/debug/tracing)}
          spids: [157]
        )
      ]
      spids: [157]
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:flock)
              op: Equal
              rhs: {(/var/tmp/.ftrace-lock)}
              spids: [160]
            )
          ]
          spids: [160]
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:wroteflock) op:Equal rhs:{(0)} spids:[164])]
      spids: [164]
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:opt_duration) op:Equal rhs:{(0)} spids:[167])]
          spids: [167]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:duration) op:Equal rhs:{(EmptyPart)} spids:[171])]
          spids: [171]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:opt_pid) op:Equal rhs:{(0)} spids:[174])]
          spids: [174]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:pid) op:Equal rhs:{(EmptyPart)} spids:[178])]
          spids: [178]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:opt_tid) op:Equal rhs:{(0)} spids:[181])]
          spids: [181]
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:tid) op:Equal rhs:{(EmptyPart)} spids:[185])]
      spids: [185]
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:opt_filter) op:Equal rhs:{(0)} spids:[187])]
          spids: [187]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:filter) op:Equal rhs:{(EmptyPart)} spids:[191])]
          spids: [191]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:opt_view) op:Equal rhs:{(0)} spids:[194])]
          spids: [194]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:opt_headers) op:Equal rhs:{(0)} spids:[198])]
          spids: [198]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:opt_stack) op:Equal rhs:{(0)} spids:[202])]
          spids: [202]
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:dmesg) op:Equal rhs:{(2)} spids:[206])]
      spids: [206]
    )
    (C {(trap)} {(SQ <':'>)} {(INT)} {(QUIT)} {(TERM)} {(PIPE)} {(HUP)})
    (FuncDef
      name: usage
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLessDash
                  fd: 16777215
                  body: 
                    {
                      (DQ ('USAGE: tpoint [-hHsv] [-d secs] [-p PID] [-L TID] tracepoint [filter]\n') 
                        ('       tpoint -l\n') ('                 -d seconds      # trace duration, and use buffers\n') 
                        ('                 -p PID          # PID to match on event\n') ('                 -L TID          # thread id to match on event\n') 
                        ("                 -v              # view format file (don't trace)\n") ('                 -H              # include column headers\n') 
                        ('                 -l              # list all tracepoints\n') ('                 -s              # show kernel stack traces\n') 
                        ('                 -h              # this usage message\n') ('   eg,\n') ('       tpoint -l | grep open\n') 
                        ('                                 # find tracepoints containing ') (Right_DoubleQuote '"') (open) (Right_DoubleQuote '"') ('\n') ('       tpoint syscalls:sys_enter_open\n') 
                        ('                                 # trace open() syscall entry\n') ('       tpoint block:block_rq_issue\n') 
                        ('                                 # trace block I/O issue\n') ('       tpoint -s block:block_rq_issue\n') 
                        ('                                 # show kernel stacks\n') ('\n') ('See the man page and example file for more info.\n')
                      )
                    }
                  do_expansion: True
                  here_end: END
                  was_filled: T
                  spids: [238]
                )
                (Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[241])
              ]
            )
            (ControlFlow token:<ControlFlow_Exit exit>)
          ]
          spids: [233]
        )
      spids: [229 232]
    )
    (FuncDef
      name: warn
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (Pipeline children:[(C {(eval)} {(DQ ($ VSub_At '$@'))})] negated:T)
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {
                          (DQ ('WARNING: command failed ') 
                            (EscapedLiteralPart
                              token: <Lit_EscapedChar '\\"'>
                            ) ($ VSub_At '$@') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                          )
                        }
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[299])]
                    )
                  ]
                  spids: [16777215 294]
                )
              ]
              spids: [16777215 310]
            )
          ]
          spids: [280]
        )
      spids: [276 279]
    )
    (FuncDef
      name: end
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(echo)}]
              redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[328])]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ ('Ending tracing...'))}]
              redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[338])]
            )
            (C {(cd)} {($ VSub_Name '$tracing')})
            (C {(warn)} {(DQ ('echo 0 > ') ($ VSub_Name '$tdir') (/enable))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (DParen child:(ArithVarRef name:opt_filter))
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(warn)} {(DQ ('echo 0 > ') ($ VSub_Name '$tdir') (/filter))})]
                  spids: [16777215 366]
                )
              ]
              spids: [16777215 378]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DParen child:(ArithVarRef name:opt_stack))
                (C {(warn)} {(DQ ('echo 0 > options/stacktrace'))})
              ]
            )
            (C {(warn)} {(DQ ('echo > trace'))})
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DParen child:(ArithVarRef name:wroteflock))
                (C {(warn)} {(DQ ('rm ') ($ VSub_Name '$flock'))})
              ]
            )
          ]
          spids: [319]
        )
      spids: [315 318]
    )
    (FuncDef
      name: die
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(echo)} {(DQ ($ VSub_At '$@'))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[432])]
            )
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [427]
        )
      spids: [423 426]
    )
    (FuncDef
      name: edie
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(echo)} {(DQ ($ VSub_At '$@'))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[460])]
            )
            (SimpleCommand
              words: [{(exec)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(/dev/null)}
                  spids: [470]
                )
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[473])
              ]
            )
            (C {(end)})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [451]
        )
      spids: [447 450]
    )
    (While
      cond: [
        (C {(getopts)} {(d) (Lit_Other ':') (hHlp) (Lit_Other ':') (L) (Lit_Other ':') (sv)} {(opt)})
      ]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Name '$opt')}
              arms: [
                (case_arm
                  pat_list: [{(d)}]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:opt_duration)
                              op: Equal
                              rhs: {(1)}
                              spids: [517]
                            )
                          ]
                          spids: [517]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:duration)
                          op: Equal
                          rhs: {($ VSub_Name '$OPTARG')}
                          spids: [521]
                        )
                      ]
                      spids: [521]
                    )
                  ]
                  spids: [514 515 524 16777215]
                )
                (case_arm
                  pat_list: [{(p)}]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:opt_pid)
                              op: Equal
                              rhs: {(1)}
                              spids: [530]
                            )
                          ]
                          spids: [530]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:pid)
                          op: Equal
                          rhs: {($ VSub_Name '$OPTARG')}
                          spids: [534]
                        )
                      ]
                      spids: [534]
                    )
                  ]
                  spids: [527 528 537 16777215]
                )
                (case_arm
                  pat_list: [{(L)}]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:opt_tid)
                              op: Equal
                              rhs: {(1)}
                              spids: [543]
                            )
                          ]
                          spids: [543]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:tid)
                          op: Equal
                          rhs: {($ VSub_Name '$OPTARG')}
                          spids: [547]
                        )
                      ]
                      spids: [547]
                    )
                  ]
                  spids: [540 541 550 16777215]
                )
                (case_arm
                  pat_list: [{(H)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:opt_headers)
                          op: Equal
                          rhs: {(1)}
                          spids: [556]
                        )
                      ]
                      spids: [556]
                    )
                  ]
                  spids: [553 554 559 16777215]
                )
                (case_arm
                  pat_list: [{(l)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:opt_list)
                          op: Equal
                          rhs: {(1)}
                          spids: [565]
                        )
                      ]
                      spids: [565]
                    )
                  ]
                  spids: [562 563 568 16777215]
                )
                (case_arm
                  pat_list: [{(s)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:opt_stack)
                          op: Equal
                          rhs: {(1)}
                          spids: [574]
                        )
                      ]
                      spids: [574]
                    )
                  ]
                  spids: [571 572 577 16777215]
                )
                (case_arm
                  pat_list: [{(v)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:opt_view)
                          op: Equal
                          rhs: {(1)}
                          spids: [583]
                        )
                      ]
                      spids: [583]
                    )
                  ]
                  spids: [580 581 586 16777215]
                )
                (case_arm
                  pat_list: [{(h)} {(Lit_Other '?')}]
                  action: [(C {(usage)})]
                  spids: [589 592 596 16777215]
                )
              ]
              spids: [507 511 599]
            )
          ]
          spids: [504 601]
        )
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (DParen child:(ArithUnary op_id:Arith_Bang child:(ArithVarRef name:opt_list)))
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(shift)} 
              {
                (ArithSubPart
                  anode: 
                    (ArithBinary
                      op_id: Arith_Minus
                      left: (ArithWord w:{($ VSub_Name '$OPTIND')})
                      right: (ArithWord w:{(Lit_Digits 1)})
                    )
                  spids: [619 628]
                )
              }
            )
            (AndOr
              ops: [Op_DPipe]
              children: [(DParen child:(ArithWord w:{($ VSub_Pound '$#')})) (C {(usage)})]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:tpoint)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [643]
                )
              ]
              spids: [643]
            )
            (C {(shift)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (DParen child:(ArithWord w:{($ VSub_Pound '$#')}))
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:opt_filter)
                          op: Equal
                          rhs: {(1)}
                          spids: [663]
                        )
                      ]
                      spids: [663]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:filter)
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                          spids: [667]
                        )
                      ]
                      spids: [667]
                    )
                  ]
                  spids: [16777215 660]
                )
              ]
              spids: [16777215 671]
            )
          ]
          spids: [16777215 614]
        )
      ]
      spids: [16777215 673]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (DParen
          child: 
            (ArithBinary
              op_id: Arith_Great
              left: 
                (ArithBinary
                  op_id: Arith_Plus
                  left: 
                    (ArithBinary
                      op_id: Arith_Plus
                      left: (ArithVarRef name:opt_pid)
                      right: (ArithVarRef name:opt_filter)
                    )
                  right: (ArithVarRef name:opt_tid)
                )
              right: (ArithWord w:{(Lit_Digits 1)})
            )
        )
        (C {(die)} {(DQ ('ERROR: use at most one of -p, -L, or filter.'))})
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (DParen
          child: 
            (ArithBinary
              op_id: Arith_DAmp
              left: (ArithVarRef name:opt_duration)
              right: (ArithVarRef name:opt_view)
            )
        )
        (C {(die)} {(DQ ('ERROR: use either -d or -v.'))})
      ]
    )
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_pid)) terminator:<Op_Semi ';'>)]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:opt_filter) op:Equal rhs:{(1)} spids:[744])]
              spids: [744]
            )
            (ForEach
              iter_name: tid
              iter_words: [{(/proc/) ($ VSub_Name '$pid') (/task/) (Lit_Other '*')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:filter)
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_Name '$filter') (' || common_pid == ') 
                                (BracedVarSub
                                  token: <VSub_Name tid>
                                  suffix_op: 
                                    (StringUnary
                                      op_id: VOp1_DPound
                                      arg_word: {('*') (Lit_Slash /)}
                                    )
                                  spids: [771 776]
                                )
                              )
                            }
                          spids: [767]
                        )
                      ]
                      spids: [767]
                    )
                  ]
                  spids: [764 780]
                )
              spids: [757 762]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:filter)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name filter>
                        suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 3)}))
                        spids: [784 788]
                      )
                    }
                  spids: [783]
                )
              ]
              spids: [783]
            )
          ]
          spids: [16777215 737]
        )
      ]
      spids: [16777215 793]
    )
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_tid)) terminator:<Op_Semi ';'>)]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:opt_filter) op:Equal rhs:{(1)} spids:[808])]
              spids: [808]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:filter)
                  op: Equal
                  rhs: {(DQ ('common_pid == ') ($ VSub_Name '$tid'))}
                  spids: [812]
                )
              ]
              spids: [812]
            )
          ]
          spids: [16777215 805]
        )
      ]
      spids: [16777215 818]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DParen
                  child: 
                    (ArithBinary
                      op_id: Arith_DAmp
                      left: (ArithUnary op_id:Arith_Bang child:(ArithVarRef name:opt_view))
                      right: (ArithUnary op_id:Arith_Bang child:(ArithVarRef name:opt_list))
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (DParen child:(ArithVarRef name:opt_duration))
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('Tracing ') ($ VSub_Name '$tpoint') (' for ') ($ VSub_Name '$duration') 
                          (' seconds (buffered)...')
                        )
                      }
                    )
                  ]
                  spids: [16777215 849]
                )
              ]
              else_action: [
                (C {(echo)} {(DQ ('Tracing ') ($ VSub_Name '$tpoint') ('. Ctrl-C to end.'))})
              ]
              spids: [863 875]
            )
          ]
          spids: [16777215 836]
        )
      ]
      spids: [16777215 877]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(cd)} {($ VSub_Name '$tracing')})
        (C {(die)} 
          {
            (DQ ('ERROR: accessing tracing. Root user? Kernel has FTRACE?\n') 
              ('    debugfs mounted? (mount -t debugfs debugfs /sys/kernel/debug)')
            )
          }
        )
      ]
    )
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_list)) terminator:<Op_Semi ';'>)]
          action: [
            (C {(cd)} {(events)})
            (ForEach
              iter_name: tp
              iter_words: [{(Lit_Other '*') (/) (Lit_Other '*')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DAmp]
                      children: [
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_f child:{($ VSub_Name '$tp')})
                        )
                        (ControlFlow token:<ControlFlow_Continue continue>)
                      ]
                    )
                    (C {(echo)} 
                      {
                        (BracedVarSub
                          token: <VSub_Name tp>
                          suffix_op: 
                            (PatSub
                              pat: {(EscapedLiteralPart token:<Lit_EscapedChar '\\/'>)}
                              replace: {(':')}
                              do_all: F
                              do_prefix: F
                              do_suffix: F
                            )
                          spids: [951 957]
                        )
                      }
                    )
                  ]
                  spids: [929 960]
                )
              spids: [923 927]
            )
            (ControlFlow token:<ControlFlow_Exit exit>)
          ]
          spids: [16777215 910]
        )
      ]
      spids: [16777215 965]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tdir)
          op: Equal
          rhs: 
            {(events/) 
              (BracedVarSub
                token: <VSub_Name tpoint>
                suffix_op: 
                  (PatSub
                    pat: {(':')}
                    replace: {(EscapedLiteralPart token:<Lit_EscapedChar '\\/'>)}
                    do_all: F
                    do_prefix: F
                    do_suffix: F
                  )
                spids: [973 979]
              )
            }
          spids: [971]
        )
      ]
      spids: [971]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (DBracket expr:(BoolUnary op_id:BoolUnary_e child:{($ VSub_Name '$tdir')}))
        (C {(die)} {(DQ ('ERROR: tracepoint ') ($ VSub_Name '$tpoint') (' not found. Exiting'))})
      ]
    )
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_view)) terminator:<Op_Semi ';'>)]
          action: [
            (C {(cat)} {($ VSub_Name '$tdir') (/format)})
            (ControlFlow token:<ControlFlow_Exit exit>)
          ]
          spids: [16777215 1013]
        )
      ]
      spids: [16777215 1024]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (DBracket expr:(BoolUnary op_id:BoolUnary_e child:{($ VSub_Name '$flock')}))
        (C {(die)} 
          {
            (DQ ('ERROR: ftrace may be in use by PID ') 
              (CommandSubPart
                command_list: (CommandList children:[(C {(cat)} {($ VSub_Name '$flock')})])
                left_token: <Left_CommandSub '$('>
                spids: [1044 1048]
              ) (' ') ($ VSub_Name '$flock')
            )
          }
        )
      ]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (SimpleCommand
          words: [{(echo)} {($ VSub_Dollar '$$')}]
          redirects: [
            (Redir
              op_id: Redir_Great
              fd: 16777215
              arg_word: {($ VSub_Name '$flock')}
              spids: [1057]
            )
          ]
        )
        (C {(die)} {(DQ ('ERROR: unable to write ') ($ VSub_Name '$flock') (.))})
      ]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:wroteflock) op:Equal rhs:{(1)} spids:[1071])]
      spids: [1071]
    )
    (SimpleCommand
      words: [{(echo)} {(nop)}]
      redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(current_tracer)} spids:[1082])]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (DParen child:(ArithVarRef name:opt_filter))
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (SimpleCommand
                              words: [{(echo)} {(DQ ($ VSub_Name '$filter'))}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: 16777215
                                  arg_word: {($ VSub_Name '$tdir') (/filter)}
                                  spids: [1109]
                                )
                              ]
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(edie)} {(DQ ('ERROR: setting filter or -p. Exiting.'))})]
                  spids: [16777215 1115]
                )
              ]
              spids: [16777215 1125]
            )
          ]
          spids: [16777215 1096]
        )
      ]
      spids: [16777215 1127]
    )
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_stack)) terminator:<Op_Semi ';'>)]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (SimpleCommand
                              words: [{(echo)} {(1)}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: 16777215
                                  arg_word: {(options/stacktrace)}
                                  spids: [1150]
                                )
                              ]
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(edie)} {(DQ ('ERROR: enabling stack traces (-s). Exiting'))})]
                  spids: [16777215 1155]
                )
              ]
              spids: [16777215 1165]
            )
          ]
          spids: [16777215 1139]
        )
      ]
      spids: [16777215 1167]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (Pipeline
                  children: [
                    (SimpleCommand
                      words: [{(echo)} {(1)}]
                      redirects: [
                        (Redir
                          op_id: Redir_DGreat
                          fd: 16777215
                          arg_word: {($ VSub_Name '$tdir') (/enable)}
                          spids: [1177]
                        )
                      ]
                    )
                  ]
                  negated: T
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(edie)} {(DQ ('ERROR: enabling tracepoint ') ($ VSub_Name '$tprobe') ('. Exiting.'))})
          ]
          spids: [16777215 1183]
        )
      ]
      spids: [16777215 1194]
    )
    (C {(warn)} {(DQ ('echo > trace'))})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (DParen child:(ArithVarRef name:opt_duration))
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(sleep)} {($ VSub_Name '$duration')})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (DParen child:(ArithVarRef name:opt_headers))
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cat)} {(trace)})]
                  spids: [16777215 1234]
                )
              ]
              else_action: [(C {(grep)} {(-v)} {(SQ <'^#'>)} {(trace)})]
              spids: [1242 1256]
            )
          ]
          spids: [16777215 1216]
        )
      ]
      else_action: [
        (AndOr
          ops: [Op_DAmp]
          children: [(DParen child:(ArithVarRef name:opt_headers)) (C {(cat)} {(trace)})]
        )
        (C {(cat)} {(trace_pipe)})
      ]
      spids: [1258 1283]
    )
    (C {(end)})
  ]
)