(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SAVEPATH)
          op: Equal
          rhs: {(DQ ($ VSub_Name '$PATH'))}
          spids: [66]
        )
      ]
      spids: [66]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(source)} {(sources/include.sh)})
        (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:STAGE_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name HOSTTOOLS))}
          spids: [82]
        )
      ]
      spids: [82]
    )
    (C {(blank_tempdir)} {(DQ ($ VSub_Name '$WORK'))})
    (AndOr
      ops: [Op_DPipe]
      children: [(C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$STAGE_DIR'))}) (C {(dienow)})]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:PATH)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(hosttools_path)})])
                  left_token: <Left_CommandSub '$('>
                  spids: [181 183]
                ) (':') ($ VSub_Name '$PATH')
              )
            }
          spids: [179]
        )
      ]
      spids: [179]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$BUILD_STATIC'))} {(KW_Bang '!') (Lit_Other '=')} 
              {(none)} {(Lit_Other ']')}
            )
          ]
          action: [
            (C {($ VSub_Name '$CC')} {(DQ ($ VSub_Name '$SOURCES') (/root-filesystem/src/hello.c))} 
              {(--static)} {(-o)} {(/dev/null)}
            )
            (If
              arms: [
                (if_arm
                  cond: [(C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')})]
                  action: [
                    (SimpleCommand
                      words: [{(echo)} {(DQ ('Your host toolchain does not support static linking.'))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[248])]
                    )
                    (SimpleCommand
                      words: [{(echo)} {(DQ ('Either install support, or export BUILD_STATIC=none'))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[258])]
                    )
                    (C {(dienow)})
                  ]
                  spids: [16777215 239]
                )
              ]
              spids: [16777215 266]
            )
          ]
          spids: [16777215 208]
        )
      ]
      spids: [16777215 268]
    )
    (AndOr
      ops: [Op_DAmp Op_DAmp]
      children: [
        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Name '$STAGE_DIR') (/busybox))} 
          {(Lit_Other ']')}
        )
        (C {(build_section)} {(busybox)})
        (C {(rm)} {(-f)} {(DQ ($ VSub_Name '$STAGE_DIR') (/sh))})
      ]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Name '$STAGE_DIR') (/toybox))} 
          {(Lit_Other ']')}
        )
        (C {(build_section)} {(toybox)})
      ]
    )
    (ForEach
      iter_name: i
      iter_words: [
        {(ar)}
        {(as)}
        {(nm)}
        {(cc)}
        {(make)}
        {(ld)}
        {(gcc)}
        {(objdump)}
        {(sh)}
        {($ VSub_Name '$HOST_EXTRA')}
      ]
      do_arg_iter: F
      body: 
        (DoGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} 
                      {(DQ ($ VSub_Name '$STAGE_DIR') (/) ($ VSub_Name '$i'))} {(Lit_Other ']')}
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:X) op:Equal rhs:{(0)} spids:[415])]
                      spids: [415]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:FALLBACK)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$STAGE_DIR'))}
                          spids: [419]
                        )
                      ]
                      spids: [419]
                    )
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [
                            {(DQ ($ VSub_Name '$STAGE_DIR') (/which))}
                            {(-a)}
                            {(DQ ($ VSub_Name '$i'))}
                          ]
                          more_env: [
                            (env_pair
                              name: PATH
                              val: {(DQ ($ VSub_Name '$SAVEPATH'))}
                              spids: [425]
                            )
                          ]
                        )
                        (While
                          cond: [(C {(read)} {(j)})]
                          body: 
                            (DoGroup
                              children: [
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-e)} 
                                          {(DQ ($ VSub_Name '$FALLBACK') (/) ($ VSub_Name '$i'))} {(Lit_Other ']')}
                                        )
                                      ]
                                      action: [
                                        (AndOr
                                          ops: [Op_DAmp Op_DPipe]
                                          children: [
                                            (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$FALLBACK'))})
                                            (C {(ln)} {(-sf)} {(DQ ($ VSub_Name '$j'))} 
                                              {(DQ ($ VSub_Name '$FALLBACK') (/) ($ VSub_Name '$i'))}
                                            )
                                            (C {(dienow)})
                                          ]
                                        )
                                      ]
                                      spids: [16777215 470]
                                    )
                                  ]
                                  spids: [16777215 503]
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:X)
                                      op: Equal
                                      rhs: 
                                        {
                                          (ArithSubPart
                                            anode: 
                                              (ArithBinary
                                                op_id: Arith_Plus
                                                left: (ArithWord w:{($ VSub_Name '$X')})
                                                right: (ArithWord w:{(Lit_Digits 1)})
                                              )
                                            spids: [508 512]
                                          )
                                        }
                                      spids: [507]
                                    )
                                  ]
                                  spids: [507]
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:FALLBACK)
                                      op: Equal
                                      rhs: 
                                        {
                                          (DQ ($ VSub_Name '$STAGE_DIR') (/fallback-) 
                                            ($ VSub_Name '$X')
                                          )
                                        }
                                      spids: [515]
                                    )
                                  ]
                                  spids: [515]
                                )
                              ]
                              spids: [450 523]
                            )
                        )
                      ]
                      negated: F
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} 
                              {(DQ ($ VSub_Name '$STAGE_DIR') (/) ($ VSub_Name '$i'))} {(Lit_Other ']')}
                            )
                          ]
                          action: [
                            (SimpleCommand
                              words: [
                                {(echo)}
                                {(DQ ('Toolchain component missing: ') ($ VSub_Name '$i'))}
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: 16777215
                                  arg_word: {(2)}
                                  spids: [554]
                                )
                              ]
                            )
                            (C {(dienow)})
                          ]
                          spids: [16777215 544]
                        )
                      ]
                      spids: [16777215 561]
                    )
                  ]
                  spids: [16777215 407]
                )
              ]
              spids: [16777215 564]
            )
          ]
          spids: [387 566]
        )
      spids: [366 16777215]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ET_TU_UBUNTU)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (SimpleCommand
                          words: [{(DQ ($ VSub_Name '$STAGE_DIR') (/which))} {(gcc.real)}]
                          more_env: [
                            (env_pair
                              name: PATH
                              val: {(DQ ($ VSub_Name '$SAVEPATH'))}
                              spids: [579]
                            )
                          ]
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [578 590]
                )
              )
            }
          spids: [576]
        )
      ]
      spids: [576]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$ET_TU_UBUNTU'))} {(Lit_Other ']')})
        (SimpleCommand
          words: [
            {(ln)}
            {(-s)}
            {(DQ ($ VSub_Name '$ET_TU_UBUNTU'))}
            {(DQ ($ VSub_Name '$STAGE_DIR') (/gcc.real))}
          ]
          redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[620])]
        )
      ]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:PATH)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(hosttools_path)})])
                  left_token: <Left_CommandSub '$('>
                  spids: [633 635]
                )
              )
            }
          spids: [631]
        )
      ]
      spids: [631]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (SimpleCommand
                            words: [
                              {(find)}
                              {(DQ ($ VSub_Name '$STAGE_DIR'))}
                              {(-newer)}
                              {(DQ ($ VSub_Name '$BUILD') (/record-commands))}
                            ]
                            redirects: [
                              (Redir
                                op_id: Redir_Great
                                fd: 2
                                arg_word: {(/dev/null)}
                                spids: [661]
                              )
                            ]
                          )
                        ]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [647 663]
                  )
                )
              } {(Lit_Other ']')}
            )
          ]
          action: [
            (AndOr
              ops: [Op_DAmp Op_DPipe]
              children: [
                (C {(cd)} {(DQ ($ VSub_Name '$TOP'))})
                (C {(more/record-commands.sh)})
                (C {(dienow)})
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PATH)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$WRAPDIR'))}
                  spids: [686]
                )
              ]
              spids: [686]
            )
          ]
          spids: [16777215 668]
        )
      ]
      spids: [16777215 691]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_Other '[')} {(-z)} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(which)} {(distccd)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [727 731]
                  )
                )
              } {(Lit_Other ']')}
            )
          ]
          action: [
            (AndOr
              ops: [Op_DAmp Op_DAmp Op_DAmp]
              children: [
                (C {(setupfor)} {(distcc)})
                (C {(./configure)} {(--with-included-popt)} {(--disable-Werror)})
                (C {(make)} {(-j)} {(DQ ($ VSub_Name '$CPUS'))})
                (C {(cp)} {(distcc)} {(distccd)} {(DQ (${ VSub_Name STAGE_DIR))})
              ]
            )
            (C {(cleanup)})
          ]
          spids: [16777215 736]
        )
      ]
      spids: [16777215 782]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ (${ VSub_Name STAGE_DIR)) (/genext2fs)} 
              {(Lit_Other ']')}
            )
          ]
          action: [
            (AndOr
              ops: [Op_DAmp Op_DAmp Op_DAmp]
              children: [
                (C {(setupfor)} {(genext2fs)})
                (C {(./configure)})
                (C {(make)} {(-j)} {($ VSub_Name '$CPUS')})
                (C {(cp)} {(genext2fs)} {(DQ (${ VSub_Name STAGE_DIR))})
              ]
            )
            (C {(cleanup)})
          ]
          spids: [16777215 809]
        )
      ]
      spids: [16777215 847]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ (${ VSub_Name STAGE_DIR)) (/mke2fs)} 
              {(Lit_Other ']')}
            )
          ]
          action: [
            (AndOr
              ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp]
              children: [
                (C {(setupfor)} {(e2fsprogs)})
                (C {(./configure)} {(--disable-tls)} {(--disable-nls)} {(--enable-htree)})
                (C {(make)} {(-j)} {(DQ ($ VSub_Name '$CPUS'))})
                (C {(cp)} 
                  (BracedWordTree
                    parts: [(misc/) (BracedAltPart words:[{(mke2fs)} {(tune2fs)}])]
                  ) {(resize/resize2fs)} {(DQ (${ VSub_Name STAGE_DIR))}
                )
                (C {(cp)} {(e2fsck/e2fsck)} {(DQ ($ VSub_Name '$STAGE_DIR')) (/fsck.ext2)})
              ]
            )
            (C {(cleanup)})
          ]
          spids: [16777215 900]
        )
      ]
      spids: [16777215 965]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ (${ VSub_Name STAGE_DIR)) (/mksquashfs)} 
              {(Lit_Other ']')}
            )
          ]
          action: [
            (AndOr
              ops: [Op_DAmp Op_DAmp Op_DAmp]
              children: [
                (C {(setupfor)} {(zlib)})
                (C {(./configure)})
                (C {(make)} {(-j)} {($ VSub_Name '$CPUS')})
                (C {(mv)} {(z) (Lit_Other '*') (.h)} {(libz.a)} {(..)})
              ]
            )
            (C {(cleanup)})
            (AndOr
              ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp]
              children: [
                (C {(setupfor)} {(squashfs)})
                (C {(cd)} {(squashfs-tools)})
                (C {(sed)} {(-i)} {(DQ ('/^XATTR_/d'))} {(Makefile)})
                (SimpleCommand
                  words: [{(make)} {(-j)} {($ VSub_Name '$CPUS')}]
                  more_env: [
                    (env_pair
                      name: CC
                      val: {(DQ ($ VSub_Name '$CC') (' -I ../.. -L ../..'))}
                      spids: [1064]
                    )
                  ]
                )
                (C {(cp)} {(mksquashfs)} {(unsquashfs)} {(DQ (${ VSub_Name STAGE_DIR))})
                (C {(rm)} 
                  (BracedWordTree
                    parts: [(../../) (BracedAltPart words:[{(z) (Lit_Other '*') (.h)} {(libz.a)}])]
                  )
                )
              ]
            )
            (C {(cleanup)})
          ]
          spids: [16777215 989]
        )
      ]
      spids: [16777215 1109]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (SimpleCommand
                            words: [
                              {(find)}
                              {(DQ ($ VSub_Name '$STAGE_DIR'))}
                              {(-newer)}
                              {(DQ ($ VSub_Name '$BUILD') (/record-commands))}
                            ]
                            redirects: [
                              (Redir
                                op_id: Redir_Great
                                fd: 2
                                arg_word: {(/dev/null)}
                                spids: [1138]
                              )
                            ]
                          )
                        ]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [1124 1140]
                  )
                )
              } {(Lit_Other ']')}
            )
          ]
          action: [
            (AndOr
              ops: [Op_DAmp Op_DPipe]
              children: [
                (C {(cd)} {(DQ ($ VSub_Name '$TOP'))})
                (C {(more/record-commands.sh)})
                (C {(dienow)})
              ]
            )
          ]
          spids: [16777215 1145]
        )
      ]
      spids: [16777215 1162]
    )
    (C {(echo)} {(-e)} 
      {(DQ (Lit_Other '\\') ('e[32mHost tools build complete.') (Lit_Other '\\') ('e[0m'))}
    )
  ]
)