(CommandList
  children: [
    (C {(set)} {(-o)} {(pipefail)})
    (If
      arms: [
        (if_arm
          cond: [(C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-lt)} {(4)} {(Lit_Other ']')})]
          action: [
            (SimpleCommand
              words: [{(echo)} {(DQ ('usage: bisectinate ARCH PACKAGE REPO[@BAD] GOOD [TEST...]'))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[43])]
            )
            (SimpleCommand
              words: [{(echo)}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[49])]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ ('Bisect PACKAGE for ARCH, from START to BAD within REPO'))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[59])]
            )
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 34]
        )
      ]
      spids: [16777215 67]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ARCH)
          op: Equal
          rhs: {(DQ ($ VSub_Number '$1'))}
          spids: [74]
        )
      ]
      spids: [74]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:PKG)
          op: Equal
          rhs: {(DQ ($ VSub_Number '$2'))}
          spids: [79]
        )
      ]
      spids: [79]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:REPO)
          op: Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  token: <VSub_Number 3>
                  suffix_op: 
                    (PatSub
                      pat: {('@*')}
                      replace: {(EmptyPart)}
                      do_all: F
                      do_prefix: F
                      do_suffix: F
                    )
                  spids: [86 91]
                )
              )
            }
          spids: [84]
        )
      ]
      spids: [84]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:BRANCH)
          op: Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  token: <VSub_Number 3>
                  suffix_op: 
                    (PatSub
                      pat: {('*@')}
                      replace: {(EmptyPart)}
                      do_all: F
                      do_prefix: F
                      do_suffix: F
                    )
                  spids: [96 101]
                )
              )
            }
          spids: [94]
        )
      ]
      spids: [94]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$BRANCH'))} {(Lit_Other '=') (Lit_Other '=')} 
          {(DQ ($ VSub_Number '$3'))} {(Lit_Other ']')}
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:BRANCH) op:Equal rhs:{(master)} spids:[121])]
          spids: [121]
        )
      ]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:START)
          op: Equal
          rhs: {(DQ ($ VSub_Number '$4'))}
          spids: [124]
        )
      ]
      spids: [124]
    )
    (C {(shift)} {(4)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TEST)
          op: Equal
          rhs: {(DQ ($ VSub_Number '$1'))}
          spids: [133]
        )
      ]
      spids: [133]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TOP)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(pwd)})])
                  left_token: <Left_CommandSub '$('>
                  spids: [141 143]
                )
              )
            }
          spids: [139]
        )
      ]
      spids: [139]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$SRCDIR'))} {(Lit_Other ']')})
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:SRCDIR)
              op: Equal
              rhs: {(DQ ($ VSub_Name '$TOP') (/packages))}
              spids: [158]
            )
          ]
          spids: [158]
        )
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$BUILD'))} {(Lit_Other ']')})
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:BUILD)
              op: Equal
              rhs: {(DQ ($ VSub_Name '$TOP') (/build))}
              spids: [176]
            )
          ]
          spids: [176]
        )
      ]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-d)} {(DQ ($ VSub_Name '$REPO') (/.git))} 
              {(Lit_Other ']')}
            )
          ]
          action: [
            (C {(echo)} {(DQ ('No git repo at ') ($ VSub_Name '$REPO'))})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 198]
        )
      ]
      spids: [16777215 213]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$TEST'))} {(Lit_Other ']')})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:TEST) op:Equal rhs:{(true)} spids:[228])]
          spids: [228]
        )
      ]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$PKG'))} {(Lit_Other '=') (Lit_Other '=')} 
                  {(linux)} {(Lit_Other ']')}
                )
                (C {(Lit_Other '[')} {(-e)} 
                  {(DQ ($ VSub_Name '$BUILD') (/root-filesystem-) ($ VSub_Name '$ARCH')) (.tar.bz2)} {(Lit_Other ']')}
                )
              ]
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ZAPJUST)
                  op: Equal
                  rhs: {(linux-kernel)}
                  spids: [269]
                )
              ]
              spids: [269]
            )
          ]
          spids: [16777215 266]
        )
        (if_arm
          cond: [
            (AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$PKG'))} {(Lit_Other '=') (Lit_Other '=')} 
                  {(busybox)} {(Lit_Other ']')}
                )
                (C {(Lit_Other '[')} {(-e)} 
                  {
                    (DQ ($ VSub_Name '$BUILD') (/simple-cross-compiler-) ($ VSub_Name '$ARCH') 
                      (.tar.bz2)
                    )
                  } {(Lit_Other ']')}
                )
              ]
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ZAPJUST)
                  op: Equal
                  rhs: {(root-filesystem)}
                  spids: [306]
                )
              ]
              spids: [306]
            )
          ]
          spids: [272 303]
        )
      ]
      else_action: [
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:ZAPJUST) op:Equal rhs:{(EmptyPart)} spids:[312])]
          spids: [312]
        )
      ]
      spids: [309 314]
    )
    (AndOr
      ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DPipe]
      children: [
        (C {(rm)} {(-rf)} {(DQ ($ VSub_Name '$BUILD') (/packages/alt-) ($ VSub_Name '$PKG'))} 
          {(DQ ($ VSub_Name '$SRCDIR') (/alt-) ($ VSub_Name '$PKG') (-0.tar.bz2))}
        )
        (C {(mkdir)} {(-p)} 
          (BracedWordTree
            parts: [(DQ ($ VSub_Name '$BUILD')) (/) (BracedAltPart words:[{(logs)} {(packages)}])]
          )
        )
        (C {(cd)} {(DQ ($ VSub_Name '$BUILD') (/packages))})
        (C {(git)} {(clone)} {(DQ ($ VSub_Name '$REPO'))} {(DQ (alt-) ($ VSub_Name '$PKG'))})
        (C {(cd)} {(DQ (alt-) ($ VSub_Name '$PKG'))})
        (C {(git)} {(bisect)} {(start)})
        (C {(git)} {(bisect)} {(good)} {(DQ ($ VSub_Name '$START'))})
        (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:RESULT)
          op: Equal
          rhs: {(DQ ('bad ') ($ VSub_Name '$BRANCH'))}
          spids: [414]
        )
      ]
      spids: [414]
    )
    (While
      cond: [(C {(true)})]
      body: 
        (DoGroup
          children: [
            (AndOr
              ops: [Op_DAmp Op_DAmp Op_DPipe]
              children: [
                (C {(cd)} {(DQ ($ VSub_Name '$BUILD') (/packages/alt-) ($ VSub_Name '$PKG'))})
                (C {(git)} {(clean)} {(-fdx)})
                (C {(git)} {(checkout)} {(-f)})
                (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(git)} {(bisect)} {($ VSub_Name '$RESULT')})]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [473 479]
                        )
                      )
                    }
                  spids: [471]
                )
              ]
              spids: [471]
            )
            (C {(echo)} {(DQ ($ VSub_Name '$RESULT'))})
            (AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_Other '[')} {(KW_Bang '!')} 
                  {
                    (DQ 
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ VSub_Name '$RESULT'))})
                                  (C {(head)} {(-n)} {(1)})
                                  (C {(grep)} {(DQ ('^Bisecting:'))})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [495 517]
                      )
                    )
                  } {(Lit_Other ']')}
                )
                (ControlFlow token:<ControlFlow_Exit exit>)
              ]
            )
            (SimpleCommand
              words: [{(git)} {(show)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: 
                    {(DQ ($ VSub_Name '$BUILD') (/logs/bisectinate-) (${ VSub_Name ARCH) (.txt))}
                  spids: [537]
                )
              ]
            )
            (SimpleCommand
              words: [{(git)} {(bisect)} {(log)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: 
                    {(DQ ($ VSub_Name '$BUILD') (/logs/bisectinate-) (${ VSub_Name ARCH) (.log))}
                  spids: [555]
                )
              ]
            )
            (Pipeline
              children: [(C {(git)} {(log)} {(HEAD)} {(-1)}) (C {(cat)})]
              negated: F
            )
            (C {(echo)} {(DQ (Testing...))})
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(cd)} {(DQ ($ VSub_Name '$TOP'))})
                (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              ]
            )
            (AndOr
              ops: [Op_DAmp Op_DPipe]
              children: [
                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$ZAPJUST'))} 
                  {(Lit_Other ']')}
                )
                (C {(rm)} {(-rf)} 
                  (BracedWordTree
                    parts: [
                      (DQ ($ VSub_Name '$BUILD') (/) (${ VSub_Name ZAPJUST) (-) ($ VSub_Name '$ARCH'))
                      (BracedAltPart words:[{} {(.tar.bz2)}])
                    ]
                  )
                )
                (C {(rm)} {(-rf)} 
                  (BracedWordTree
                    parts: [
                      (DQ ($ VSub_Name '$BUILD'))
                      (/)
                      (Lit_Other '*')
                      (-)
                      (DQ ($ VSub_Name '$ARCH'))
                      (BracedAltPart words:[{} {(.tar.bz2)}])
                    ]
                  )
                )
              ]
            )
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(./build.sh)} {(DQ ($ VSub_Name '$ARCH'))}]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[691])]
                  more_env: [
                    (env_pair name:EXTRACT_ALL val:{(1)} spids:[672])
                    (env_pair name:ALLOW_PATCH_FAILURE val:{(1)} spids:[675])
                    (env_pair
                      name: USE_ALT
                      val: {(DQ ($ VSub_Name '$PKG'))}
                      spids: [678]
                    )
                  ]
                )
                (C {(tee)} {(-a)} 
                  {(DQ ($ VSub_Name '$BUILD')) (/logs/bisectinate-) (DQ ($ VSub_Name '$ARCH')) (.txt)}
                )
              ]
              negated: F
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:RESULT) op:Equal rhs:{(bad)} spids:[716])]
              spids: [716]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (C {(Lit_Other '[')} {(-e)} 
                      {(DQ ($ VSub_Name '$BUILD')) (/system-image-) (DQ ($ VSub_Name '$ARCH')) 
                        (.tar.bz2)
                      } {(Lit_Other ']')}
                    )
                  ]
                  action: [
                    (C {(set)} {(-o)} {(pipefail)})
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{(more/timeout.sh)} {(60)} {(DQ ($ VSub_Name '$TEST'))}]
                          redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[761])]
                          more_env: [
                            (env_pair
                              name: ARCH
                              val: {(DQ ($ VSub_Name '$ARCH'))}
                              spids: [748]
                            )
                          ]
                        )
                        (C {(tee)} {(-a)} 
                          {(DQ ($ VSub_Name '$BUILD') (/logs/bisectinate-) ($ VSub_Name '$ARCH')) 
                            (.txt)
                          }
                        )
                      ]
                      negated: F
                    )
                    (AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-eq)} {(0)} {(Lit_Other ']')})
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:RESULT)
                              op: Equal
                              rhs: {(good)}
                              spids: [792]
                            )
                          ]
                          spids: [792]
                        )
                      ]
                    )
                  ]
                  spids: [16777215 738]
                )
              ]
              spids: [16777215 796]
            )
            (C {(mv)} 
              (BracedWordTree
                parts: [
                  (DQ ($ VSub_Name '$BUILD'))
                  (/logs/bisectinate)
                  (BracedAltPart words:[{} {(-) ($ VSub_Name '$RESULT')}])
                  (-)
                  (DQ ($ VSub_Name '$ARCH'))
                  (.txt)
                ]
              )
            )
          ]
          spids: [429 822]
        )
    )
  ]
)