(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-ne>} {<2>} {<Id.Lit_RBracket ']'>})
              ]
            )
          action: [
            (command.Simple
              words: [
                {<echo>}
                {(DQ <'usage: '> ($ Id.VSub_Number '$0') <' '>) (SQ <'$ARCH $CONTROL_IMAGE'>)}
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [11 23]
        )
      ]
    )
    (command.ForEach
      iter_name: i
      iter_words: [
        (word.BracedTree
          parts: [
            <'build/'>
            (word_part.BracedTuple words:[{<root-filesystem>} {<native-compiler>}])
            <->
            (DQ ($ Id.VSub_Number '$1'))
          ]
        )
        {(DQ ($ Id.VSub_Number '$2'))}
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} 
                          {(DQ ($ Id.VSub_DollarName '$i'))} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ <'No '> ($ Id.VSub_DollarName '$i'))}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [76 91]
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} 
                  {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<id>} {<-u>}))} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.Simple
              words: [{<echo>} {(DQ <'Not root'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [115 133]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$CHROOT'))} {<Id.Lit_RBracket ']'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:CHROOT)
              op: assign_op.Equal
              rhs: {(DQ <'build/chroot-'> ($ Id.VSub_Number '$1'))}
              spids: [168]
            )
          ]
        )
      ]
    )
    (C {<trap>} {(SQ <'more/zapchroot.sh "$CHROOT"'>)} {<EXIT>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_DollarName '$CHROOT'))} 
                  {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<'more/zapchroot.sh'>} {(DQ ($ Id.VSub_DollarName '$CHROOT'))})
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
            )
          ]
          spids: [182 194]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<cp>} {<-lan>} {(DQ <'build/root-filesystem-'> ($ Id.VSub_Number '$1') <'/.'>)} 
          {(DQ ($ Id.VSub_DollarName '$CHROOT'))}
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<cp>} {<-lan>} {(DQ <'build/native-compiler-'> ($ Id.VSub_Number '$1') <'/.'>)} 
          {(DQ ($ Id.VSub_DollarName '$CHROOT'))}
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ ($ Id.VSub_Number '$2'))} {<Id.Lit_RBracket ']'>})
              ]
            )
          action: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {<mount>} {<-o>} {<bind>} {(DQ ($ Id.VSub_Number '$2'))} 
                  {(DQ ($ Id.VSub_DollarName '$CHROOT') <'/mnt'>)}
                )
                (C {<mount>} {<-o>} {<remount> <Id.Lit_Comma ','> <ro>} 
                  {(DQ ($ Id.VSub_DollarName '$CHROOT') <'/mnt'>)}
                )
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
            )
          ]
          spids: [259 271]
        )
      ]
      else_action: [
        (command.AndOr
          ops: [Id.Op_DPipe]
          children: [
            (C {<mount>} {<-o>} {<loop>} {(DQ ($ Id.VSub_Number '$2'))} 
              {(DQ ($ Id.VSub_DollarName '$CHROOT') <'/mnt'>)}
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
        )
      ]
    )
    (command.Simple
      words: [{<chroot>} {(DQ ($ Id.VSub_DollarName '$CHROOT'))} {<'/sbin/init.sh'>}]
      more_env: [
        (env_pair name:CPUS val:{<1>} spids:[341])
        (env_pair name:HOST val:{(DQ ($ Id.VSub_Number '$1'))} spids:[344])
      ]
      do_fork: T
    )
  ]
)