(command.CommandList
  children: [
    (command.AndOr
      ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp]
      children: [
        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Number '$2'))} {(Lit_Other ']')})
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:REBUILD spids:[85])
              op: Equal
              rhs: {(DQ ($ VSub_Number '$2'))}
              spids: [85]
            )
          ]
          spids: [85]
        )
        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-e)} {(DQ ($ VSub_Number '$2')) (.sh)} {(Lit_Other ']')})
        (C {(echo)} {(DQ ('no stage ') ($ VSub_Number '$2'))})
        (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.AndOr
              ops: [Op_DPipe Op_DPipe]
              children: [
                (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-lt)} {(1)} {(Lit_Other ']')})
                (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(2)} {(Lit_Other ']')})
                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-e)} {(sources/targets/) (DQ ($ VSub_Number '$1'))} 
                  {(Lit_Other ']')}
                )
              ]
            )
          ]
          action: [
            (C {(echo)})
            (C {(echo)} {(DQ ('Usage: ') ($ VSub_Number '$0') (' TARGET [REBUILD_FROM_STAGE]'))})
            (C {(echo)})
            (C {(echo)} {(DQ ('Supported architectures:'))})
            (C {(ls)} {(sources/targets)})
            (C {(echo)})
            (C {(echo)} {(DQ ('Build stages:'))})
            (command.Pipeline
              children: [
                (C {(sed)} {(-n)} {(SQ <'s/#.*//;s@.*[.]/\\([^.]*\\)[.]sh.*@\\1@p'>)} 
                  {(DQ ($ VSub_Number '$0'))}
                )
                (C {(uniq)})
                (C {(xargs)} {(echo)})
              ]
              negated: F
            )
            (C {(echo)})
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 161]
        )
      ]
      spids: [16777215 232]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:ARCH spids:[234])
          op: Equal
          rhs: {(DQ ($ VSub_Number '$1'))}
          spids: [234]
        )
      ]
      spids: [234]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [(C {(Lit_Other '[')} {(-e)} {(config)} {(Lit_Other ']')}) (C {(source)} {(config)})]
    )
    (command.AndOr
      ops: [Op_DAmp]
      children: [
        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$BUILD'))} {(Lit_Other ']')})
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:BUILD spids:[278])
              op: Equal
              rhs: {(DQ (build))}
              spids: [278]
            )
          ]
          spids: [278]
        )
      ]
    )
    (command.FuncDef
      name: not_already
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$AGAIN'))} {(Lit_Other '=') (Lit_Other '=')} 
                  {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')}
                )
                (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$REBUILD'))} {(Lit_Other '=') (Lit_Other '=')} 
                  {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')}
                )
                (C {(zap)} {(DQ ($ VSub_Number '$1'))})
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Lit_Other '[')} {(-f)} 
                      {
                        (DQ ($ VSub_Name '$BUILD') (/) ($ VSub_Number '$1') (-) ($ VSub_Name '$ARCH') 
                          (.tar.gz)
                        )
                      } {(Lit_Other ']')}
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('=== Skipping ') ($ VSub_Number '$1') (-) ($ VSub_Name '$ARCH') 
                          (' (already there)')
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(1)}
                    )
                  ]
                  spids: [16777215 370]
                )
              ]
              spids: [16777215 389]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [302]
        )
      spids: [298 301]
    )
    (command.FuncDef
      name: zap
      body: 
        (command.BraceGroup
          children: [
            (command.ForEach
              iter_name: i
              iter_words: [{(DQ ($ VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(rm)} {(-f)} 
                      {
                        (DQ ($ VSub_Name '$BUILD') (/) ($ VSub_Name '$i') (-) ($ VSub_Name '$ARCH') 
                          (.tar.gz)
                        )
                      }
                    )
                  ]
                  spids: [418 435]
                )
              spids: [412 16777215]
            )
          ]
          spids: [404]
        )
      spids: [400 403]
    )
    (command.FuncDef
      name: do_stage
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:STAGE spids:[450])
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [450]
                )
              ]
              spids: [450]
            )
            (C {(shift)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$AFTER'))} {(Lit_Other '=') (Lit_Other '=')} 
                      {(DQ ($ VSub_Name '$STAGE'))} {(Lit_Other ']')}
                    )
                  ]
                  action: [(C {(unset)} {(AFTER)})]
                  spids: [16777215 478]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (command.TimeBlock
                      pipeline: (C {(./) (DQ ($ VSub_Name '$STAGE')) (.sh)} {(DQ ($ VSub_At '$@'))})
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(1)}
                    )
                  ]
                )
              ]
              spids: [486 508]
            )
          ]
          spids: [447]
        )
      spids: [443 446]
    )
    (C {(do_stage)} {(download)})
    (command.If
      arms: [
        (if_arm
          cond: [(C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$NO_HOST_TOOLS'))} {(Lit_Other ']')})]
          action: [(C {(do_stage)} {(host-tools)})]
          spids: [16777215 557]
        )
      ]
      spids: [16777215 564]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$MY_CROSS_PATH'))} {(Lit_Other ']')})
                (C {(not_already)} {(simple-cross-compiler)})
              ]
            )
          ]
          action: [
            (C {(zap)} {(root-filesystem)} {(cross-compiler)} {(native-compiler)})
            (C {(do_stage)} {(simple-cross-compiler)} {(DQ ($ VSub_Name '$ARCH'))})
          ]
          spids: [16777215 589]
        )
      ]
      spids: [16777215 615]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$MY_CROSS_PATH'))} {(Lit_Other ']')})
                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$CROSS_COMPILER_HOST'))} 
                  {(Lit_Other ']')}
                )
                (C {(not_already)} {(cross-compiler)})
              ]
            )
          ]
          action: [
            (C {(zap)} {(root-filesystem)} {(native-compiler)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.SimpleCommand
                      words: [{(not_already)} {(simple-cross-compiler)}]
                      more_env: [
                        (env_pair
                          name: ARCH
                          val: {(DQ ($ VSub_Name '$CROSS_COMPILER_HOST'))}
                          spids: [679]
                        )
                      ]
                    )
                  ]
                  action: [
                    (C {(do_stage)} {(simple-cross-compiler)} {(DQ ($ VSub_Name '$CROSS_COMPILER_HOST'))})
                  ]
                  spids: [16777215 689]
                )
              ]
              spids: [16777215 701]
            )
            (C {(do_stage)} {(cross-compiler)} {(DQ ($ VSub_Name '$ARCH'))})
          ]
          spids: [16777215 661]
        )
      ]
      spids: [16777215 713]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Pipeline
              children: [
                (C {(grep)} {(-q)} {(Lit_VarLike 'KARCH=')} 
                  {(sources/targets/) (DQ ($ VSub_Name '$ARCH'))}
                )
              ]
              negated: T
            )
          ]
          action: [
            (C {(echo)} {(no)} {(KARCH)} {(KW_In in)} {($ VSub_Number '$1') (Lit_Comma ',')} {(stopping)} 
              {(here)}
            )
          ]
          spids: [16777215 731]
        )
      ]
      spids: [16777215 749]
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {(not_already)} {(root-filesystem)})]
          action: [(C {(do_stage)} {(root-filesystem)} {(DQ ($ VSub_Name '$ARCH'))})]
          spids: [16777215 762]
        )
      ]
      spids: [16777215 773]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$MY_CROSS_PATH'))} {(Lit_Other ']')})
                (command.Pipeline
                  children: [
                    (C {(grep)} {(-q)} {(ELF2FLT)} {(sources/targets/) (DQ ($ VSub_Name '$ARCH'))})
                  ]
                  negated: T
                )
                (C {(not_already)} {(native-compiler)})
              ]
            )
          ]
          action: [(C {(do_stage)} {(native-compiler)} {(DQ ($ VSub_Name '$ARCH'))})]
          spids: [16777215 821]
        )
      ]
      spids: [16777215 832]
    )
    (C {(do_stage)} {(system-image)} {(DQ ($ VSub_Name '$ARCH'))})
  ]
)