(command.CommandList
  children: [
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<source>} {<'sources/include.sh'>})
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
    )
    (C {<load_target>} {(DQ ($ Id.VSub_Number '$1'))})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<check_for_base_arch>})
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
      ]
    )
    (C {<check_prerequisite>} {(DQ (${ Id.VSub_Name CC_PREFIX) <cc>)})
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DPipe]
      children: [
        (C {<mkdir>} {<-p>} 
          (word.BracedTree
            parts: [
              (DQ ($ Id.VSub_DollarName '$STAGE_DIR'))
              <'/'>
              (word_part.BracedTuple
                words: [{<tmp>} {<Id.KW_Proc proc>} {<sys>} {<dev>} {<home>} {<mnt>} {<root>}]
              )
            ]
          )
        )
        (C {<chmod>} {<a> <Id.Lit_Other '+'> <rwxt>} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/tmp'>)})
        (C {<dienow>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:STAGE_USR)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/usr'>)}
          spids: [101]
        )
      ]
    )
    (command.ForEach
      iter_name: i
      iter_words: [{<bin>} {<sbin>} {<lib>} {<etc>}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {<mkdir>} {<-p>} 
                  {(DQ ($ Id.VSub_DollarName '$STAGE_USR') <'/'> ($ Id.VSub_DollarName '$i'))}
                )
                (C {<ln>} {<-s>} {(DQ <'usr/'> ($ Id.VSub_DollarName '$i'))} 
                  {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/'> ($ Id.VSub_DollarName '$i'))}
                )
                (C {<dienow>})
              ]
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe]
      children: [
        (C {<cp>} {<-r>} {(DQ ($ Id.VSub_DollarName '$SOURCES') <'/root-filesystem/.'>)} 
          {(DQ ($ Id.VSub_DollarName '$STAGE_USR') <'/'>)}
        )
        (command.Simple
          words: [
            {<echo>}
            {<-e>}
            {
              (DQ <'CROSS_TARGET='> ($ Id.VSub_DollarName '$CROSS_TARGET') <Id.Lit_BadBackslash '\\'> 
                <'nKARCH='> ($ Id.VSub_DollarName '$KARCH')
              )
            }
          ]
          redirects: [
            (redir
              op: <Id.Redir_Great '>'>
              loc: (redir_loc.Fd fd:1)
              arg: {(DQ ($ Id.VSub_DollarName '$STAGE_USR') <'/src/host-info'>)}
            )
          ]
          do_fork: T
        )
        (C {<cp>} {(DQ ($ Id.VSub_DollarName '$SRCDIR')) <'/MANIFEST'>} 
          {(DQ ($ Id.VSub_DollarName '$STAGE_USR') <'/src'>)}
        )
        (C {<dienow>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} 
                  {(DQ ($ Id.VSub_DollarName '$MY_ROOT_OVERLAY'))} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$TOP'))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Pipeline
                  children: [
                    (C {<tar>} {<-c>} {<-C>} {(DQ ($ Id.VSub_DollarName '$MY_ROOT_OVERLAY'))} {<.>})
                    (C {<tar>} {<-x>} {<-C>} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR'))})
                  ]
                  negated: F
                )
                (C {<dienow>})
              ]
            )
          ]
          spids: [241 255]
        )
      ]
    )
    (command.Simple
      words: [{<build_section>} {<busybox>}]
      more_env: [(env_pair name:STAGE_DIR val:{(DQ ($ Id.VSub_DollarName '$STAGE_USR'))} spids:[300])]
      do_fork: T
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<cp>} {(DQ ($ Id.VSub_DollarName '$WORK')) <'/config-busybox'>} 
          {(DQ ($ Id.VSub_DollarName '$STAGE_USR')) <'/src'>}
        )
        (C {<dienow>})
      ]
    )
    (C {<build_section>} {<toybox>})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(DQ (${ Id.VSub_Name CC_PREFIX) <cc>)} 
          {(DQ (${ Id.VSub_Name SOURCES) <'/root-filesystem/src/hello.c'>)} {<-Os>} {($ Id.VSub_DollarName '$CFLAGS')} {<-o>} 
          {(DQ ($ Id.VSub_DollarName '$STAGE_USR') <'/bin/hello-dynamic'>)}
        )
        (C {<dienow>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$BUILD_STATIC'))} 
                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<none>} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(DQ (${ Id.VSub_Name CC_PREFIX) <cc>)} 
                  {(DQ (${ Id.VSub_Name SOURCES) <'/root-filesystem/src/hello.c'>)} {<-Os>} {($ Id.VSub_DollarName '$CFLAGS')} {<-static>} {<-o>} 
                  {(DQ ($ Id.VSub_DollarName '$STAGE_USR') <'/bin/hello-static'>)}
                )
                (C {<dienow>})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:STATIC)
                  op: assign_op.Equal
                  rhs: {<--static>}
                  spids: [421]
                )
              ]
            )
          ]
          spids: [369 384]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:STATIC)
              op: assign_op.Equal
              rhs: (word.Empty)
              spids: [427]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(DQ (${ Id.VSub_Name CC_PREFIX) <cc>)} 
          {(DQ ($ Id.VSub_DollarName '$SOURCES') <'/toys/wrappy.c'>)} {<-Os>} {($ Id.VSub_DollarName '$CFLAGS')} {($ Id.VSub_DollarName '$STATIC')} {<-o>} 
          {(DQ ($ Id.VSub_DollarName '$STAGE_USR') <'/bin/record-commands-wrapper'>)}
        )
        (C {<dienow>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (command.Pipeline
                      children: [(C {<is_in_list>} {<toybox>} {($ Id.VSub_DollarName '$BUILD_STATIC')})]
                      negated: T
                    )
                    (command.Pipeline
                      children: [
                        (C {<is_in_list>} {<busybox>} {($ Id.VSub_DollarName '$BUILD_STATIC')})
                      ]
                      negated: T
                    )
                  ]
                )
              ]
            )
          action: [
            (C {<echo>} {<Copying>} {<compiler>} {<libraries...>})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$STAGE_USR') <'/lib'>)})
                (C {<dienow>})
              ]
            )
            (command.Pipeline
              children: [
                (command.Subshell
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<path_search>} 
                          {
                            (DQ 
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {(DQ (${ Id.VSub_Name CC_PREFIX) <cc>)} 
                                        {<--print-search-dirs>}
                                      )
                                      (C {<sed>} {<-n>} {(SQ <'s/^libraries: =*//p'>)})
                                    ]
                                    negated: F
                                  )
                              )
                            )
                          } {(DQ <'*.so*'>)} {(SQ <'cp -H "$DIR/$FILE" "$STAGE_USR/lib/$FILE"'>)}
                        )
                        (C {<dienow>})
                      ]
                    )
                )
                (C {<dotprogress>})
              ]
              negated: F
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$SKIP_STRIP'))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {(DQ (${ Id.VSub_Name CC_PREFIX) <strip>)} {<--strip-unneeded>} 
                  {(DQ ($ Id.VSub_DollarName '$STAGE_USR')) <'/lib/'> <Id.Lit_Star '*'> <.so>}
                )
              ]
            )
          ]
          spids: [472 492]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$SKIP_STRIP'))} 
          {<Id.Lit_RBracket ']'>}
        )
        (C {(DQ (${ Id.VSub_Name CC_PREFIX) <strip>)} 
          (word.BracedTree
            parts: [
              (DQ ($ Id.VSub_DollarName '$STAGE_USR'))
              <'/'>
              (word_part.BracedTuple
                words: [{<'bin/'> <Id.Lit_Star '*'>} {<'sbin/'> <Id.Lit_Star '*'>}]
              )
            ]
          )
        )
      ]
    )
    (C {<create_stage_tarball>})
    (C {<echo>} {<-e>} {(DQ <Id.Lit_BadBackslash '\\'> <'e[0mBuild complete'>)})
  ]
)