(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PORTAGE_READONLY_METADATA)
          op: Equal
          rhs: 
            {
              (DQ ('DEFINED_PHASES DEPEND DESCRIPTION\n') 
                ('\tEAPI HDEPEND HOMEPAGE INHERITED IUSE REQUIRED_USE KEYWORDS LICENSE\n') ('\tPDEPEND PROVIDE RDEPEND REPOSITORY RESTRICT SLOT SRC_URI')
              )
            }
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PORTAGE_READONLY_VARS)
          op: Equal
          rhs: 
            {
              (DQ ('D EBUILD EBUILD_PHASE EBUILD_PHASE_FUNC ') 
                ('\tEBUILD_SH_ARGS ECLASSDIR EMERGE_FROM FILESDIR MERGE_TYPE ') ('\tPM_EBUILD_HOOK_DIR ') ('\tPORTAGE_ACTUAL_DISTDIR PORTAGE_ARCHLIST PORTAGE_BASHRC  ') 
                ('\tPORTAGE_BINPKG_FILE PORTAGE_BINPKG_TAR_OPTS PORTAGE_BINPKG_TMPFILE ') ('\tPORTAGE_BIN_PATH PORTAGE_BUILDDIR PORTAGE_BUILD_GROUP ') 
                ('\tPORTAGE_BUILD_USER PORTAGE_BUNZIP2_COMMAND ') ('\tPORTAGE_BZIP2_COMMAND PORTAGE_COLORMAP PORTAGE_CONFIGROOT ') 
                ('\tPORTAGE_DEBUG PORTAGE_DEPCACHEDIR PORTAGE_EBUILD_EXIT_FILE ') ('\tPORTAGE_ECLASS_LOCATIONS ') ('\tPORTAGE_GID PORTAGE_GRPNAME PORTAGE_INST_GID PORTAGE_INST_UID ') 
                ('\tPORTAGE_INTERNAL_CALLER PORTAGE_IPC_DAEMON PORTAGE_IUSE PORTAGE_LOG_FILE ') ('\tPORTAGE_MUTABLE_FILTERED_VARS PORTAGE_OVERRIDE_EPREFIX ') 
                ('\tPORTAGE_PYM_PATH PORTAGE_PYTHON PORTAGE_PYTHONPATH ') ('\tPORTAGE_READONLY_METADATA PORTAGE_READONLY_VARS ') 
                ('\tPORTAGE_REPO_NAME PORTAGE_REPOSITORIES PORTAGE_RESTRICT ') ('\tPORTAGE_SAVED_READONLY_VARS PORTAGE_SIGPIPE_STATUS ') 
                ('\tPORTAGE_TMPDIR PORTAGE_UPDATE_ENV PORTAGE_USERNAME ') ('\tPORTAGE_VERBOSE PORTAGE_WORKDIR_MODE PORTAGE_XATTR_EXCLUDE ') ('\tPORTDIR ') 
                ('\tREPLACING_VERSIONS REPLACED_BY_VERSION T WORKDIR ') ('\t__PORTAGE_HELPER __PORTAGE_TEST_HARDLINK_LOCKS')
              )
            }
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PORTAGE_SAVED_READONLY_VARS)
          op: Equal
          rhs: {(DQ ('A CATEGORY P PF PN PR PV PVR'))}
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PORTAGE_MUTABLE_FILTERED_VARS)
          op: Equal
          rhs: {(DQ ('AA HOSTNAME'))}
        )
      ]
    )
    (command.ShFunction
      name: __filter_readonly_variables
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(x)} {(filtered_vars)})
            (C {(local)} 
              {(Lit_VarLike 'readonly_bash_vars=') 
                (DQ ('BASHOPTS BASHPID DIRSTACK EUID\n') 
                  ('\t\tFUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID')
                )
              }
            )
            (C {(local)} 
              {(Lit_VarLike 'bash_misc_vars=') 
                (DQ ('BASH BASH_.* COLUMNS COMP_WORDBREAKS HISTCMD\n') 
                  ('\t\tHISTFILE HOSTNAME HOSTTYPE IFS LINENO MACHTYPE OLDPWD\n') ('\t\tOPTERR OPTIND OSTYPE POSIXLY_CORRECT PS4 PWD RANDOM\n') ('\t\tSECONDS SHLVL _')
                )
              }
            )
            (C {(local)} 
              {(Lit_VarLike 'filtered_sandbox_vars=') 
                (DQ ('SANDBOX_ACTIVE SANDBOX_BASHRC\n') 
                  ('\t\tSANDBOX_DEBUG_LOG SANDBOX_DISABLED SANDBOX_LIB\n') ('\t\tSANDBOX_LOG SANDBOX_ON')
                )
              }
            )
            (C {(local)} {(Lit_VarLike 'binpkg_untrusted_vars=') (DQ ('CATEGORY P PF PN PR PV PVR'))})
            (C {(local)} {(Lit_VarLike 'misc_garbage_vars=') (DQ (_portage_filter_opts))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:filtered_vars)
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$readonly_bash_vars') (' ') 
                        ($ VSub_DollarName '$bash_misc_vars') ('\n') ('\t\t') ($ VSub_DollarName '$PORTAGE_READONLY_VARS') (' ') 
                        ($ VSub_DollarName '$misc_garbage_vars')
                      )
                    }
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(___eapi_has_prefix_variables)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:filtered_vars)
                          op: PlusEqual
                          rhs: {(DQ (' ED EPREFIX EROOT'))}
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(has)} {(--filter-sandbox)} {($ VSub_Star '$*')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:filtered_vars)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name filtered_vars) (' SANDBOX_.*'))}
                        )
                      ]
                    )
                  ]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:filtered_vars)
                      op: Equal
                      rhs: 
                        {(DQ (${ VSub_Name filtered_vars) (' ') (${ VSub_Name filtered_sandbox_vars))}
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(has)} {(--filter-features)} {($ VSub_Star '$*')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:filtered_vars)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name filtered_vars) (' FEATURES PORTAGE_FEATURES'))}
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(has)} {(--filter-path)} {($ VSub_Star '$*')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:filtered_vars)
                          op: PlusEqual
                          rhs: {(DQ (' PATH'))}
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(has)} {(--filter-locale)} {($ VSub_Star '$*')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:filtered_vars)
                          op: PlusEqual
                          rhs: 
                            {
                              (DQ (' LANG LC_ALL LC_COLLATE\n') 
                                ('\t\t\tLC_CTYPE LC_MESSAGES LC_MONETARY\n') ('\t\t\tLC_NUMERIC LC_PAPER LC_TIME')
                              )
                            }
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [(C {(has)} {(--allow-extra-vars)} {($ VSub_Star '$*')})]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Lit_LBracket '[')} {(DQ (${ VSub_Name EMERGE_FROM))} 
                                  {(Lit_Equals '=')} {(binary)} {(Lit_RBracket ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:filtered_vars)
                                  op: PlusEqual
                                  rhs: {(DQ (' ') (${ VSub_Name binpkg_untrusted_vars))}
                                )
                              ]
                            )
                          ]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:filtered_vars)
                              op: PlusEqual
                              rhs: {(DQ (' ') (${ VSub_Name PORTAGE_SAVED_READONLY_VARS))}
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:filtered_vars)
                              op: PlusEqual
                              rhs: {(DQ (' ') (${ VSub_Name PORTAGE_MUTABLE_FILTERED_VARS))}
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C 
                  {
                    (DQ 
                      (braced_var_sub
                        token: <VSub_Name PORTAGE_PYTHON>
                        suffix_op: 
                          (suffix_op.Unary
                            op_id: VTest_ColonHyphen
                            arg_word: {(Lit_Slash /) (usr) (Lit_Slash /) (bin) (Lit_Slash /) (python)}
                          )
                      )
                    )
                  } {(DQ (${ VSub_Name PORTAGE_BIN_PATH)) (/filter-bash-environment.py)} {(DQ (${ VSub_Name filtered_vars))}
                )
                (C {(die)} {(DQ ('filter-bash-environment.py failed'))})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: __preprocess_ebuild_env
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Lit_VarLike '_portage_filter_opts=') 
                (DQ ('--filter-features --filter-locale --filter-path --filter-sandbox'))
              }
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(Lit_LBracket '[')} {(-f)} {(DQ (${ VSub_Name T) (/environment.raw))} 
                  {(Lit_RBracket ']')}
                )
                (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (command.Simple
                  words: [{(__filter_readonly_variables)} {($ VSub_DollarName '$_portage_filter_opts')}]
                  redirects: [
                    (redir.Redir
                      op: <Redir_Less '<'>
                      fd: 16777215
                      arg_word: {(DQ (${ VSub_Name T)) (/environment)}
                    )
                    (redir.Redir
                      op: <Redir_DGreat '>>'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_DollarName '$T') (/environment.filtered))}
                    )
                  ]
                )
                (command.ControlFlow
                  token: <ControlFlow_Return return>
                  arg_word: {($ VSub_QMark '$?')}
                )
              ]
            )
            (C {(unset)} {(_portage_filter_opts)})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(mv)} {(DQ (${ VSub_Name T)) (/environment.filtered)} 
                  {(DQ (${ VSub_Name T)) (/environment)}
                )
                (command.ControlFlow
                  token: <ControlFlow_Return return>
                  arg_word: {($ VSub_QMark '$?')}
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(rm)} {(-f)} {(DQ (${ VSub_Name T) (/environment.success))})
                (command.ControlFlow
                  token: <ControlFlow_Return return>
                  arg_word: {($ VSub_QMark '$?')}
                )
              ]
            )
            (command.Subshell
              command_list: 
                (command.CommandList
                  children: [
                    (C {(export)} {(Lit_VarLike 'SANDBOX_ON=') (1)})
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(source)} {(DQ (${ VSub_Name T) (/environment))})
                        (command.ControlFlow
                          token: <ControlFlow_Exit exit>
                          arg_word: {($ VSub_QMark '$?')}
                        )
                      ]
                    )
                    (C {(export)} {(Lit_VarLike 'SANDBOX_ON=') (0)})
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(source)} {(DQ (${ VSub_Name PORTAGE_BIN_PATH) (/save-ebuild-env.sh))})
                        (command.ControlFlow
                          token: <ControlFlow_Exit exit>
                          arg_word: {($ VSub_QMark '$?')}
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(__save_ebuild_env)})
                        (command.ControlFlow
                          token: <ControlFlow_Exit exit>
                          arg_word: {($ VSub_QMark '$?')}
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (command.Simple
                          redirects: [
                            (redir.Redir
                              op: <Redir_DGreat '>>'>
                              fd: 16777215
                              arg_word: {(DQ ($ VSub_DollarName '$T') (/environment.success))}
                            )
                          ]
                        )
                        (command.ControlFlow
                          token: <ControlFlow_Exit exit>
                          arg_word: {($ VSub_QMark '$?')}
                        )
                      ]
                    )
                  ]
                )
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {(DQ (${ VSub_Name T) (/environment.filtered))}
                )
              ]
            )
            (C {(local)} {(retval)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_LBracket '[')} {(-e)} {(DQ (${ VSub_Name T) (/environment.success))} 
                          {(Lit_RBracket ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(__filter_readonly_variables)} {(--filter-features)}]
                      redirects: [
                        (redir.Redir
                          op: <Redir_Less '<'>
                          fd: 16777215
                          arg_word: {(DQ (${ VSub_Name T) (/environment.filtered))}
                        )
                        (redir.Redir
                          op: <Redir_Great '>'>
                          fd: 16777215
                          arg_word: {(DQ (${ VSub_Name T) (/environment))}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:retval)
                          op: Equal
                          rhs: {($ VSub_QMark '$?')}
                        )
                      ]
                    )
                  ]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:retval) op:Equal rhs:{(1)})]
                )
              ]
            )
            (C {(rm)} {(-f)} 
              (word.BracedTree
                parts: [
                  (DQ (${ VSub_Name T))
                  (/environment.)
                  (word_part.BracedTuple words:[{(filtered)} {(raw)} {(success)}])
                ]
              )
            )
            (command.ControlFlow
              token: <ControlFlow_Return return>
              arg_word: {(${ VSub_Name retval)}
            )
          ]
        )
    )
    (command.ShFunction
      name: __ebuild_phase
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.Simple
                  words: [{(declare)} {(-F)} {(DQ ($ VSub_Number '$1'))}]
                  redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})]
                )
                (C {(__qa_call)} {($ VSub_Number '$1')})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: __ebuild_phase_with_hooks
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(x)} {(Lit_VarLike 'phase_name=') (${ VSub_Number 1)})
            (command.ForEach
              iter_name: x
              iter_words: [
                (word.BracedTree
                  parts: [
                    (word_part.BracedTuple words:[{(pre_)} {} {(post_)}])
                    (${ VSub_Name phase_name)
                  ]
                )
              ]
              do_arg_iter: F
              body: (command.DoGroup children:[(C {(__ebuild_phase)} {(${ VSub_Name x)})])
            )
          ]
        )
    )
    (command.ShFunction
      name: __dyn_pretend
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: BoolUnary_e
                              child: {($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.pretended)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(__vecho)} 
                      {
                        (DQ (">>> It appears that '") ($ VSub_DollarName '$PF') 
                          ("' is already pretended; skipping.")
                        )
                      }
                    )
                    (C {(__vecho)} 
                      {
                        (DQ (">>> Remove '") ($ VSub_DollarName '$PORTAGE_BUILDDIR') 
                          ("/.pretended' to force pretend.")
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
              ]
            )
            (C {(__ebuild_phase)} {(pre_pkg_pretend)})
            (C {(__ebuild_phase)} {(pkg_pretend)})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (command.Simple
                  redirects: [
                    (redir.Redir
                      op: <Redir_DGreat '>>'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.pretended))}
                    )
                  ]
                )
                (C {(die)} 
                  {(DQ ('Failed to create ') ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.pretended))}
                )
              ]
            )
            (C {(__ebuild_phase)} {(post_pkg_pretend)})
          ]
        )
    )
    (command.ShFunction
      name: __dyn_setup
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: BoolUnary_e
                              child: {($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.setuped)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(__vecho)} 
                      {
                        (DQ (">>> It appears that '") ($ VSub_DollarName '$PF') 
                          ("' is already setup; skipping.")
                        )
                      }
                    )
                    (C {(__vecho)} 
                      {
                        (DQ (">>> Remove '") ($ VSub_DollarName '$PORTAGE_BUILDDIR') 
                          ("/.setuped' to force setup.")
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
              ]
            )
            (C {(__ebuild_phase)} {(pre_pkg_setup)})
            (C {(__ebuild_phase)} {(pkg_setup)})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (command.Simple
                  redirects: [
                    (redir.Redir
                      op: <Redir_DGreat '>>'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.setuped))}
                    )
                  ]
                )
                (C {(die)} 
                  {(DQ ('Failed to create ') ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.setuped))}
                )
              ]
            )
            (C {(__ebuild_phase)} {(post_pkg_setup)})
          ]
        )
    )
    (command.ShFunction
      name: __dyn_unpack
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: BoolUnary_f
                              child: {(${ VSub_Name PORTAGE_BUILDDIR) (/.unpacked)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(__vecho)} {(DQ ('>>> WORKDIR is up-to-date, keeping...'))})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_LBracket '[')} {(KW_Bang '!')} {(-d)} {(DQ (${ VSub_Name WORKDIR))} 
                          {(Lit_RBracket ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(install)} 
                          {(-m) 
                            (braced_var_sub
                              token: <VSub_Name PORTAGE_WORKDIR_MODE>
                              suffix_op: (suffix_op.Unary op_id:VTest_ColonHyphen arg_word:{(0700)})
                            )
                          } {(-d)} {(DQ (${ VSub_Name WORKDIR))}
                        )
                        (C {(die)} {(DQ ("Failed to create dir '") (${ VSub_Name WORKDIR) ("'"))})
                      ]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(cd)} {(DQ (${ VSub_Name WORKDIR))})
                (C {(die)} 
                  {
                    (DQ ('Directory change failed: ') 
                      (word_part.EscapedLiteral token:<Lit_EscapedChar '\\`'>) ("cd '") (${ VSub_Name WORKDIR) ("'") (word_part.EscapedLiteral token:<Lit_EscapedChar '\\`'>)
                    )
                  }
                )
              ]
            )
            (C {(__ebuild_phase)} {(pre_src_unpack)})
            (C {(__vecho)} {(DQ ('>>> Unpacking source...'))})
            (C {(__ebuild_phase)} {(src_unpack)})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (command.Simple
                  redirects: [
                    (redir.Redir
                      op: <Redir_DGreat '>>'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.unpacked))}
                    )
                  ]
                )
                (C {(die)} 
                  {(DQ ('Failed to create ') ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.unpacked))}
                )
              ]
            )
            (C {(__vecho)} {(DQ ('>>> Source unpacked in ') (${ VSub_Name WORKDIR))})
            (C {(__ebuild_phase)} {(post_src_unpack)})
          ]
        )
    )
    (command.ShFunction
      name: __dyn_clean
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_LBracket '[')} {(-z)} {(DQ (${ VSub_Name PORTAGE_BUILDDIR))} 
                          {(Lit_RBracket ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Aborting clean phase because PORTAGE_BUILDDIR is unset!'))})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(1)}
                    )
                  ]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_LBracket '[')} {(KW_Bang '!')} {(-d)} 
                          {(DQ (${ VSub_Name PORTAGE_BUILDDIR))} {(Lit_RBracket ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(has)} {(chflags)} {($ VSub_DollarName '$FEATURES')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(chflags)} {(-R)} 
                      {(noschg) (Lit_Comma ',') (nouchg) (Lit_Comma ',') (nosappnd) (Lit_Comma ',') 
                        (nouappnd)
                      } {(DQ (${ VSub_Name PORTAGE_BUILDDIR))}
                    )
                    (command.Simple
                      words: [
                        {(chflags)}
                        {(-R)}
                        {(nosunlnk) (Lit_Comma ',') (nouunlnk)}
                        {(DQ (${ VSub_Name PORTAGE_BUILDDIR))}
                      ]
                      redirects: [(redir.Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(cd)} {(DQ (${ VSub_Name PORTAGE_PYM_PATH))})
                (C {(die)} 
                  {(DQ ("PORTAGE_PYM_PATH does not exist: '") (${ VSub_Name PORTAGE_PYM_PATH) ("'"))}
                )
              ]
            )
            (C {(rm)} {(-rf)} {(DQ (${ VSub_Name PORTAGE_BUILDDIR) (/image))} 
              {(DQ (${ VSub_Name PORTAGE_BUILDDIR) (/homedir))}
            )
            (C {(rm)} {(-f)} {(DQ (${ VSub_Name PORTAGE_BUILDDIR) (/.installed))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DPipe Op_DAmp]
                          children: [
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: BoolBinary_GlobEqual
                                  left: {($ VSub_DollarName '$EMERGE_FROM')}
                                  right: {(binary)}
                                )
                            )
                            (command.Pipeline
                              children: [(C {(has)} {(keeptemp)} {($ VSub_DollarName '$FEATURES')})]
                              negated: T
                            )
                            (command.Pipeline
                              children: [(C {(has)} {(keepwork)} {($ VSub_DollarName '$FEATURES')})]
                              negated: T
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(rm)} {(-rf)} {(DQ (${ VSub_Name T))})]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DPipe]
                          children: [
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: BoolBinary_GlobEqual
                                  left: {($ VSub_DollarName '$EMERGE_FROM')}
                                  right: {(binary)}
                                )
                            )
                            (command.Pipeline
                              children: [(C {(has)} {(keepwork)} {($ VSub_DollarName '$FEATURES')})]
                              negated: T
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(rm)} {(-f)} 
                      (word.BracedTree
                        parts: [
                          (DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR'))
                          (/.)
                          (word_part.BracedTuple
                            words: [
                              {(ebuild_changed)}
                              {(logid)}
                              {(pretended)}
                              {(setuped)}
                              {(unpacked)}
                              {(prepared)}
                            ]
                          )
                        ]
                      ) 
                      (word.BracedTree
                        parts: [
                          (DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR'))
                          (/.)
                          (word_part.BracedTuple
                            words: [{(configured)} {(compiled)} {(tested)} {(packaged)}]
                          )
                        ]
                      ) {(DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR')) (/.die_hooks)} 
                      (word.BracedTree
                        parts: [
                          (DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR'))
                          (/.ipc_)
                          (word_part.BracedTuple
                            words: [{(KW_In in)} {(out)} {(lock)}]
                          )
                        ]
                      ) {(DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR')) (/.exit_status)}
                    )
                    (C {(rm)} {(-rf)} {(DQ (${ VSub_Name PORTAGE_BUILDDIR) (/build-info))})
                    (C {(rm)} {(-rf)} {(DQ (${ VSub_Name WORKDIR))})
                    (C {(rm)} {(-f)} {(DQ (${ VSub_Name PORTAGE_BUILDDIR) (/files))})
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_LBracket '[')} {(-f)} 
                          {(DQ (${ VSub_Name PORTAGE_BUILDDIR) (/.unpacked))} {(Lit_RBracket ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Pipeline
                      children: [
                        (C {(find)} {(DQ (${ VSub_Name PORTAGE_BUILDDIR))} {(-type)} {(d)} {(KW_Bang '!')} 
                          {(-regex)} {(DQ ('^') (${ VSub_Name WORKDIR))}
                        )
                        (C {(sort)} {(-r)})
                        (C {(tr)} {(DQ (Lit_Other '\\') (n))} {(DQ (Lit_Other '\\') (0))})
                        (command.Simple
                          words: [{($ VSub_DollarName '$XARGS')} {(-0)} {(rmdir)}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_AndGreat '&>'>
                              fd: 16777215
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                  ]
                )
              ]
            )
            (C {(rm)} {(-rf)} {(DQ (${ VSub_Name PORTAGE_BUILDDIR) (/distdir))})
            (command.Simple
              words: [{(rmdir)} {(DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR'))}]
              redirects: [(redir.Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})]
            )
            (C {(true)})
          ]
        )
    )
    (command.ShFunction
      name: __abort_handler
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(msg)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_LBracket '[')} {(DQ ($ VSub_Number '$2'))} 
                          {(KW_Bang '!') (Lit_Equals '=')} {(DQ (fail))} {(Lit_RBracket ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:msg)
                          op: Equal
                          rhs: 
                            {
                              (DQ (${ VSub_Name EBUILD) (': ') (${ VSub_Number 1) (' aborted; exiting.'))
                            }
                        )
                      ]
                    )
                  ]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:msg)
                      op: Equal
                      rhs: {(DQ (${ VSub_Name EBUILD) (': ') (${ VSub_Number 1) (' failed; exiting.'))}
                    )
                  ]
                )
              ]
            )
            (C {(echo)})
            (C {(echo)} {(DQ ($ VSub_DollarName '$msg'))})
            (C {(echo)})
            (C {(eval)} {(${ VSub_Number 3)})
            (C {(trap)} {(-)} {(SIGINT)} {(SIGQUIT)})
          ]
        )
    )
    (command.ShFunction
      name: __abort_prepare
      body: 
        (command.BraceGroup
          children: [
            (C {(__abort_handler)} {(src_prepare)} {($ VSub_Number '$1')})
            (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.prepared))})
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
    )
    (command.ShFunction
      name: __abort_configure
      body: 
        (command.BraceGroup
          children: [
            (C {(__abort_handler)} {(src_configure)} {($ VSub_Number '$1')})
            (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.configured))})
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
    )
    (command.ShFunction
      name: __abort_compile
      body: 
        (command.BraceGroup
          children: [
            (C {(__abort_handler)} {(DQ (src_compile))} {($ VSub_Number '$1')})
            (C {(rm)} {(-f)} {(DQ (${ VSub_Name PORTAGE_BUILDDIR) (/.compiled))})
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
    )
    (command.ShFunction
      name: __abort_test
      body: 
        (command.BraceGroup
          children: [
            (C {(__abort_handler)} {(DQ (__dyn_test))} {($ VSub_Number '$1')})
            (C {(rm)} {(-f)} {(DQ (${ VSub_Name PORTAGE_BUILDDIR) (/.tested))})
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
    )
    (command.ShFunction
      name: __abort_install
      body: 
        (command.BraceGroup
          children: [
            (C {(__abort_handler)} {(DQ (src_install))} {($ VSub_Number '$1')})
            (C {(rm)} {(-rf)} {(DQ (${ VSub_Name PORTAGE_BUILDDIR) (/image))})
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
    )
    (command.ShFunction
      name: __has_phase_defined_up_to
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(phase)})
            (command.ForEach
              iter_name: phase
              iter_words: [{(unpack)} {(prepare)} {(configure)} {(compile)} {(install)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(has)} {(${ VSub_Name phase)} {(${ VSub_Name DEFINED_PHASES)})
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name phase)}
                              right: {($ VSub_Number '$1')}
                            )
                        )
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(1)}
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
        )
    )
    (command.ShFunction
      name: __dyn_prepare
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: BoolUnary_e
                              child: {($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.prepared)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(__vecho)} 
                      {
                        (DQ (">>> It appears that '") ($ VSub_DollarName '$PF') 
                          ("' is already prepared; skipping.")
                        )
                      }
                    )
                    (C {(__vecho)} 
                      {
                        (DQ (">>> Remove '") ($ VSub_DollarName '$PORTAGE_BUILDDIR') 
                          ("/.prepared' to force prepare.")
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: (bool_expr.Unary op_id:BoolUnary_d child:{($ VSub_DollarName '$S')})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cd)} {(DQ (${ VSub_Name S))})]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(___eapi_has_S_WORKDIR_fallback)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cd)} {(DQ (${ VSub_Name WORKDIR))})]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (command.DBracket
                              expr: (bool_expr.Unary op_id:BoolUnary_z child:{(${ VSub_Name A)})
                            )
                            (command.Pipeline
                              children: [(C {(__has_phase_defined_up_to)} {(prepare)})]
                              negated: T
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cd)} {(DQ (${ VSub_Name WORKDIR))})]
                )
              ]
              else_action: [
                (C {(die)} {(DQ ("The source directory '") (${ VSub_Name S) ("' doesn't exist"))})
              ]
            )
            (C {(trap)} {(__abort_prepare)} {(SIGINT)} {(SIGQUIT)})
            (C {(__ebuild_phase)} {(pre_src_prepare)})
            (C {(__vecho)} {(DQ ('>>> Preparing source in ') ($ VSub_DollarName '$PWD') (' ...'))})
            (C {(__ebuild_phase)} {(src_prepare)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(___eapi_has_eapply_user)})
                            (command.DBracket
                              expr: 
                                (bool_expr.LogicalNot
                                  child: 
                                    (bool_expr.Unary
                                      op_id: BoolUnary_f
                                      child: {(${ VSub_Name T) (/.portage_user_patches_applied)}
                                    )
                                )
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(die)} {(DQ ('eapply_user (or default) must be called in src_prepare()!'))})
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (command.Simple
                  redirects: [
                    (redir.Redir
                      op: <Redir_DGreat '>>'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.prepared))}
                    )
                  ]
                )
                (C {(die)} 
                  {(DQ ('Failed to create ') ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.prepared))}
                )
              ]
            )
            (C {(__vecho)} {(DQ ('>>> Source prepared.'))})
            (C {(__ebuild_phase)} {(post_src_prepare)})
            (C {(trap)} {(-)} {(SIGINT)} {(SIGQUIT)})
          ]
        )
    )
    (command.ShFunction
      name: __start_distcc
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(has)} {(distcc)} {($ VSub_DollarName '$FEATURES')})
                            (C {(has)} {(distcc-pump)} {($ VSub_DollarName '$FEATURES')})
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Op_DPipe]
                                  children: [
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Unary
                                          op_id: BoolUnary_z
                                          child: {($ VSub_DollarName '$INCLUDE_SERVER_PORT')}
                                        )
                                    )
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.LogicalNot
                                          child: 
                                            (bool_expr.Unary
                                              op_id: BoolUnary_w
                                              child: {($ VSub_DollarName '$INCLUDE_SERVER_PORT')}
                                            )
                                        )
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(eval)} 
                              {
                                (command_sub
                                  left_token: <Left_DollarParen '$('>
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (C {(pump)} {(--startup)})
                                            (C {(grep)} {(-v)} {(PATH)})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                )
                              }
                            )
                            (C {(trap)} {(DQ ('pump --shutdown >/dev/null'))} {(EXIT)})
                          ]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: __dyn_configure
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: BoolUnary_e
                              child: {($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.configured)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(__vecho)} 
                      {
                        (DQ (">>> It appears that '") ($ VSub_DollarName '$PF') 
                          ("' is already configured; skipping.")
                        )
                      }
                    )
                    (C {(__vecho)} 
                      {
                        (DQ (">>> Remove '") ($ VSub_DollarName '$PORTAGE_BUILDDIR') 
                          ("/.configured' to force configuration.")
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: (bool_expr.Unary op_id:BoolUnary_d child:{($ VSub_DollarName '$S')})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cd)} {(DQ (${ VSub_Name S))})]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(___eapi_has_S_WORKDIR_fallback)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cd)} {(DQ (${ VSub_Name WORKDIR))})]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (command.DBracket
                              expr: (bool_expr.Unary op_id:BoolUnary_z child:{(${ VSub_Name A)})
                            )
                            (command.Pipeline
                              children: [(C {(__has_phase_defined_up_to)} {(configure)})]
                              negated: T
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cd)} {(DQ (${ VSub_Name WORKDIR))})]
                )
              ]
              else_action: [
                (C {(die)} {(DQ ("The source directory '") (${ VSub_Name S) ("' doesn't exist"))})
              ]
            )
            (C {(trap)} {(__abort_configure)} {(SIGINT)} {(SIGQUIT)})
            (C {(__start_distcc)})
            (C {(__ebuild_phase)} {(pre_src_configure)})
            (C {(__vecho)} {(DQ ('>>> Configuring source in ') ($ VSub_DollarName '$PWD') (' ...'))})
            (C {(__ebuild_phase)} {(src_configure)})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (command.Simple
                  redirects: [
                    (redir.Redir
                      op: <Redir_DGreat '>>'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.configured))}
                    )
                  ]
                )
                (C {(die)} 
                  {(DQ ('Failed to create ') ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.configured))}
                )
              ]
            )
            (C {(__vecho)} {(DQ ('>>> Source configured.'))})
            (C {(__ebuild_phase)} {(post_src_configure)})
            (C {(trap)} {(-)} {(SIGINT)} {(SIGQUIT)})
          ]
        )
    )
    (command.ShFunction
      name: __dyn_compile
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: BoolUnary_e
                              child: {($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.compiled)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(__vecho)} 
                      {
                        (DQ (">>> It appears that '") (${ VSub_Name PF) 
                          ("' is already compiled; skipping.")
                        )
                      }
                    )
                    (C {(__vecho)} 
                      {
                        (DQ (">>> Remove '") ($ VSub_DollarName '$PORTAGE_BUILDDIR') 
                          ("/.compiled' to force compilation.")
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: (bool_expr.Unary op_id:BoolUnary_d child:{($ VSub_DollarName '$S')})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cd)} {(DQ (${ VSub_Name S))})]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(___eapi_has_S_WORKDIR_fallback)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cd)} {(DQ (${ VSub_Name WORKDIR))})]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (command.DBracket
                              expr: (bool_expr.Unary op_id:BoolUnary_z child:{(${ VSub_Name A)})
                            )
                            (command.Pipeline
                              children: [(C {(__has_phase_defined_up_to)} {(compile)})]
                              negated: T
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cd)} {(DQ (${ VSub_Name WORKDIR))})]
                )
              ]
              else_action: [
                (C {(die)} {(DQ ("The source directory '") (${ VSub_Name S) ("' doesn't exist"))})
              ]
            )
            (C {(trap)} {(__abort_compile)} {(SIGINT)} {(SIGQUIT)})
            (C {(__start_distcc)})
            (C {(__ebuild_phase)} {(pre_src_compile)})
            (C {(__vecho)} {(DQ ('>>> Compiling source in ') ($ VSub_DollarName '$PWD') (' ...'))})
            (C {(__ebuild_phase)} {(src_compile)})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (command.Simple
                  redirects: [
                    (redir.Redir
                      op: <Redir_DGreat '>>'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.compiled))}
                    )
                  ]
                )
                (C {(die)} 
                  {(DQ ('Failed to create ') ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.compiled))}
                )
              ]
            )
            (C {(__vecho)} {(DQ ('>>> Source compiled.'))})
            (C {(__ebuild_phase)} {(post_src_compile)})
            (C {(trap)} {(-)} {(SIGINT)} {(SIGQUIT)})
          ]
        )
    )
    (command.ShFunction
      name: __dyn_test
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: BoolUnary_e
                              child: {($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.tested)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(__vecho)} 
                      {
                        (DQ ('>>> It appears that ') (${ VSub_Name PN) 
                          (' has already been tested; skipping.')
                        )
                      }
                    )
                    (C {(__vecho)} 
                      {
                        (DQ (">>> Remove '") (${ VSub_Name PORTAGE_BUILDDIR) 
                          ("/.tested' to force test.")
                        )
                      }
                    )
                    (command.ControlFlow token:<ControlFlow_Return return>)
                  ]
                )
              ]
            )
            (C {(trap)} {(DQ (__abort_test))} {(SIGINT)} {(SIGQUIT)})
            (C {(__start_distcc)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_LBracket '[')} {(-d)} {(DQ (${ VSub_Name S))} {(Lit_RBracket ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cd)} {(DQ (${ VSub_Name S))})]
                )
              ]
              else_action: [(C {(cd)} {(DQ (${ VSub_Name WORKDIR))})]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(has)} {(test)} {(${ VSub_Name RESTRICT)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(einfo)} {(DQ ('Skipping make test/check due to ebuild restriction.'))})
                    (C {(__vecho)} 
                      {
                        (DQ ('>>> Test phase [disabled because of RESTRICT=test]: ') 
                          (${ VSub_Name CATEGORY) (/) (${ VSub_Name PF)
                        )
                      }
                    )
                  ]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: BoolBinary_GlobNEqual
                                  left: {(${ VSub_Name EBUILD_FORCE_TEST)}
                                  right: {(1)}
                                )
                            )
                            (command.Pipeline
                              children: [(C {(has)} {(test)} {(${ VSub_Name FEATURES)})]
                              negated: T
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(__vecho)} 
                      {
                        (DQ ('>>> Test phase [not enabled]: ') (${ VSub_Name CATEGORY) (/) 
                          (${ VSub_Name PF)
                        )
                      }
                    )
                  ]
                )
              ]
              else_action: [
                (C {(local)} {(Lit_VarLike 'save_sp=') (${ VSub_Name SANDBOX_PREDICT)})
                (C {(addpredict)} {(/)})
                (C {(__ebuild_phase)} {(pre_src_test)})
                (C {(__vecho)} {(DQ ('>>> Test phase: ') (${ VSub_Name CATEGORY) (/) (${ VSub_Name PF))})
                (C {(__ebuild_phase)} {(src_test)})
                (C {(__vecho)} 
                  {(DQ ('>>> Completed testing ') (${ VSub_Name CATEGORY) (/) (${ VSub_Name PF))}
                )
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (command.Simple
                      redirects: [
                        (redir.Redir
                          op: <Redir_DGreat '>>'>
                          fd: 16777215
                          arg_word: {(DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.tested))}
                        )
                      ]
                    )
                    (C {(die)} 
                      {(DQ ('Failed to create ') ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.tested))}
                    )
                  ]
                )
                (C {(__ebuild_phase)} {(post_src_test)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:SANDBOX_PREDICT)
                      op: Equal
                      rhs: {(${ VSub_Name save_sp)}
                    )
                  ]
                )
              ]
            )
            (C {(trap)} {(-)} {(SIGINT)} {(SIGQUIT)})
          ]
        )
    )
    (command.ShFunction
      name: __dyn_install
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_LBracket '[')} {(-z)} {(DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR'))} 
                  {(Lit_RBracket ']')}
                )
                (C {(die)} {(DQ (${ VSub_Name FUNCNAME) (': PORTAGE_BUILDDIR is unset'))})
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(has)} {(noauto)} {($ VSub_DollarName '$FEATURES')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(rm)} {(-f)} {(DQ (${ VSub_Name PORTAGE_BUILDDIR) (/.installed))})]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: BoolUnary_e
                              child: {($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.installed)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(__vecho)} 
                      {
                        (DQ (">>> It appears that '") (${ VSub_Name PF) 
                          ("' is already installed; skipping.")
                        )
                      }
                    )
                    (C {(__vecho)} 
                      {
                        (DQ (">>> Remove '") (${ VSub_Name PORTAGE_BUILDDIR) 
                          ("/.installed' to force install.")
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
              ]
            )
            (C {(trap)} {(DQ (__abort_install))} {(SIGINT)} {(SIGQUIT)})
            (C {(__start_distcc)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: BoolUnary_n
                              child: {($ VSub_DollarName '$QA_PREBUILT')}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:QA_EXECSTACK)
                          op: PlusEqual
                          rhs: {(DQ (' ') ($ VSub_DollarName '$QA_PREBUILT'))}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:QA_TEXTRELS)
                          op: PlusEqual
                          rhs: {(DQ (' ') ($ VSub_DollarName '$QA_PREBUILT'))}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:QA_WX_LOAD)
                          op: PlusEqual
                          rhs: {(DQ (' ') ($ VSub_DollarName '$QA_PREBUILT'))}
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: x
                      iter_words: [{(QA_DT_NEEDED)} {(QA_FLAGS_IGNORED)} {(QA_PRESTRIPPED)} {(QA_SONAME)}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Binary
                                              op_id: BoolBinary_GlobEqual
                                              left: 
                                                {
                                                  (command_sub
                                                    left_token: <Left_DollarParen '$('>
                                                    command_list: 
                                                      (command.CommandList
                                                        children: [
                                                          (command.Simple
                                                            words: [
                                                              {(declare)}
                                                              {(-p)}
                                                              {($ VSub_DollarName '$x')}
                                                            ]
                                                            redirects: [
                                                              (redir.Redir
                                                                op: <Redir_Great '2>'>
                                                                fd: 2
                                                                arg_word: {(/dev/null)}
                                                              )
                                                            ]
                                                          )
                                                        ]
                                                      )
                                                  )
                                                }
                                              right: 
                                                {(declare) 
                                                  (word_part.EscapedLiteral
                                                    token: <Lit_EscapedChar '\\ '>
                                                  ) (BoolUnary_a -a) (Lit_Other '*')
                                                }
                                            )
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(eval)} 
                                      {
                                        (DQ ($ VSub_DollarName '$x') ('=(') 
                                          (word_part.EscapedLiteral
                                            token: <Lit_EscapedChar '\\"'>
                                          ) (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) ('{') ($ VSub_DollarName '$x') ('[@]}') 
                                          (word_part.EscapedLiteral
                                            token: <Lit_EscapedChar '\\"'>
                                          ) (' ') 
                                          (braced_var_sub
                                            token: <VSub_Name QA_PREBUILT>
                                            suffix_op: 
                                              (suffix_op.PatSub
                                                pat: 
                                                  {
                                                    (word_part.EscapedLiteral
                                                      token: <Lit_EscapedChar '\\*'>
                                                    )
                                                  }
                                                replace: {('.*')}
                                                replace_mode: Lit_Slash
                                              )
                                          ) (')')
                                        )
                                      }
                                    )
                                  ]
                                )
                              ]
                              else_action: [
                                (C {(eval)} 
                                  {
                                    (DQ ($ VSub_DollarName '$x') ('+=') 
                                      (word_part.EscapedLiteral
                                        token: <Lit_EscapedChar '\\"'>
                                      ) (' ') 
                                      (braced_var_sub
                                        token: <VSub_Name QA_PREBUILT>
                                        suffix_op: 
                                          (suffix_op.PatSub
                                            pat: 
                                              {
                                                (word_part.EscapedLiteral
                                                  token: <Lit_EscapedChar '\\*'>
                                                )
                                              }
                                            replace: {('.*')}
                                            replace_mode: Lit_Slash
                                          )
                                      ) (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>)
                                    )
                                  }
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (C {(unset)} {(x)})
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: BoolUnary_n
                      child: {($ VSub_DollarName '$QA_PRESTRIPPED')}
                    )
                )
                (C {(export)} {(QA_PRESTRIPPED)})
              ]
            )
            (C {(eval)} 
              {
                (DQ ('[[ -n ') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) 
                  (QA_PRESTRIPPED_) 
                  (braced_var_sub
                    token: <VSub_Name ARCH>
                    suffix_op: (suffix_op.PatSub pat:{(-)} replace:{(_)} replace_mode:Undefined_Tok)
                  ) (' ]] && ') ('\t\texport QA_PRESTRIPPED_') 
                  (braced_var_sub
                    token: <VSub_Name ARCH>
                    suffix_op: (suffix_op.PatSub pat:{(-)} replace:{(_)} replace_mode:Undefined_Tok)
                  )
                )
              }
            )
            (C {(__ebuild_phase)} {(pre_src_install)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(___eapi_has_prefix_variables)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_x)
                          op: Equal
                          rhs: {(${ VSub_Name ED)}
                        )
                      ]
                    )
                  ]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:_x) op:Equal rhs:{(${ VSub_Name D)})]
                )
              ]
            )
            (C {(rm)} {(-rf)} {(DQ (${ VSub_Name D))})
            (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name _x))})
            (C {(unset)} {(_x)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: (bool_expr.Unary op_id:BoolUnary_d child:{($ VSub_DollarName '$S')})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cd)} {(DQ (${ VSub_Name S))})]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(___eapi_has_S_WORKDIR_fallback)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cd)} {(DQ (${ VSub_Name WORKDIR))})]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (command.DBracket
                              expr: (bool_expr.Unary op_id:BoolUnary_z child:{(${ VSub_Name A)})
                            )
                            (command.Pipeline
                              children: [(C {(__has_phase_defined_up_to)} {(install)})]
                              negated: T
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cd)} {(DQ (${ VSub_Name WORKDIR))})]
                )
              ]
              else_action: [
                (C {(die)} {(DQ ("The source directory '") (${ VSub_Name S) ("' doesn't exist"))})
              ]
            )
            (C {(__vecho)})
            (C {(__vecho)} 
              {
                (DQ ('>>> Install ') (${ VSub_Name PF) (' into ') (${ VSub_Name D) (' category ') 
                  (${ VSub_Name CATEGORY)
                )
              }
            )
            (C {(export)} {(S)} {(D)})
            (C {(export)} {(Lit_VarLike 'DESTTREE=') (/usr)})
            (C {(export)} {(Lit_VarLike 'INSDESTTREE=') (DQ )})
            (C {(export)} {(Lit_VarLike '_E_EXEDESTTREE_=') (DQ )})
            (C {(export)} {(Lit_VarLike '_E_DOCDESTTREE_=') (DQ )})
            (C {(__ebuild_phase)} {(src_install)})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (command.Simple
                  redirects: [
                    (redir.Redir
                      op: <Redir_DGreat '>>'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.installed))}
                    )
                  ]
                )
                (C {(die)} 
                  {(DQ ('Failed to create ') ($ VSub_DollarName '$PORTAGE_BUILDDIR') (/.installed))}
                )
              ]
            )
            (C {(__vecho)} 
              {(DQ ('>>> Completed installing ') (${ VSub_Name PF) (' into ') (${ VSub_Name D))}
            )
            (C {(__vecho)})
            (C {(__ebuild_phase)} {(post_src_install)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{(type)} {(-P)} {(du)}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_AndGreat '&>'>
                              fd: 16777215
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(local)} 
                      {(Lit_VarLike 'nsz=') 
                        (sh_array_literal
                          left: <Op_LParen '('>
                          words: [
                            {
                              (command_sub
                                left_token: <Left_DollarParen '$('>
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(du)} {(-ks)} {(DQ (${ VSub_Name WORKDIR))})]
                                  )
                              )
                            }
                          ]
                        )
                      }
                    )
                    (C {(local)} 
                      {(Lit_VarLike 'isz=') 
                        (sh_array_literal
                          left: <Op_LParen '('>
                          words: [
                            {
                              (command_sub
                                left_token: <Left_DollarParen '$('>
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(du)} {(-ks)} {(DQ (${ VSub_Name D))})]
                                  )
                              )
                            }
                          ]
                        )
                      }
                    )
                    (command.Subshell
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.ShFunction
                              name: padl
                              body: 
                                (command.BraceGroup
                                  children: [
                                    (C {(local)} {(Lit_VarLike 's1=') ($ VSub_Number '$1')})
                                    (C {(local)} {(Lit_VarLike 's2=') ($ VSub_Number '$2')})
                                    (C {(local)} 
                                      {(Lit_VarLike 'width=') 
                                        (braced_var_sub
                                          token: <VSub_Name s1>
                                          prefix_op: VSub_Pound
                                        )
                                      }
                                    )
                                    (command.AndOr
                                      ops: [Op_DAmp]
                                      children: [
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Binary
                                              op_id: BoolBinary_gt
                                              left: 
                                                {
                                                  (braced_var_sub
                                                    token: <VSub_Name s2>
                                                    prefix_op: VSub_Pound
                                                  )
                                                }
                                              right: {(${ VSub_Name width)}
                                            )
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:width)
                                              op: Equal
                                              rhs: 
                                                {
                                                  (braced_var_sub
                                                    token: <VSub_Name s2>
                                                    prefix_op: VSub_Pound
                                                  )
                                                }
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (C {(printf)} {(DQ ('%*s'))} {(${ VSub_Name width)} 
                                      {(DQ (${ VSub_Name s1))}
                                    )
                                  ]
                                )
                            )
                            (command.ShFunction
                              name: human
                              body: 
                                (command.BraceGroup
                                  children: [
                                    (C {(local)} {(Lit_VarLike 's1=') ($ VSub_Number '$1')})
                                    (C {(local)} 
                                      {(Lit_VarLike 'units=') 
                                        (sh_array_literal
                                          left: <Op_LParen '('>
                                          words: [{(KiB)} {(MiB)} {(GiB)} {(TiB)}]
                                        )
                                      }
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:s1)
                                          op: Equal
                                          rhs: 
                                            {
                                              (word_part.ArithSub
                                                anode: 
                                                  (arith_expr.Binary
                                                    op_id: Arith_Star
                                                    left: 
                                                      (arith_expr.VarRef
                                                        token: <Lit_ArithVarLike s1>
                                                      )
                                                    right: (arith_expr.ArithWord w:{(Lit_Digits 10)})
                                                  )
                                              )
                                            }
                                        )
                                      ]
                                    )
                                    (command.WhileUntil
                                      keyword: <KW_While while>
                                      cond: [
                                        (command.Sentence
                                          child: 
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.LogicalAnd
                                                  left: 
                                                    (bool_expr.Binary
                                                      op_id: BoolBinary_gt
                                                      left: {(${ VSub_Name s1)}
                                                      right: {(10240)}
                                                    )
                                                  right: 
                                                    (bool_expr.Binary
                                                      op_id: BoolBinary_gt
                                                      left: 
                                                        {
                                                          (braced_var_sub
                                                            token: <VSub_Name units>
                                                            prefix_op: VSub_Pound
                                                            bracket_op: 
                                                              (bracket_op.WholeArray
                                                                op_id: Lit_At
                                                              )
                                                          )
                                                        }
                                                      right: {(1)}
                                                    )
                                                )
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      body: 
                                        (command.DoGroup
                                          children: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:s1)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (word_part.ArithSub
                                                        anode: 
                                                          (arith_expr.Binary
                                                            op_id: Arith_Slash
                                                            left: 
                                                              (arith_expr.VarRef
                                                                token: <Lit_ArithVarLike s1>
                                                              )
                                                            right: 
                                                              (arith_expr.ArithWord
                                                                w: {(Lit_Digits 1024)}
                                                              )
                                                          )
                                                      )
                                                    }
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:units)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (sh_array_literal
                                                        left: <Op_LParen '('>
                                                        words: [
                                                          {
                                                            (braced_var_sub
                                                              token: <VSub_Name units>
                                                              bracket_op: 
                                                                (bracket_op.WholeArray
                                                                  op_id: Lit_At
                                                                )
                                                              suffix_op: 
                                                                (suffix_op.Slice
                                                                  begin: 
                                                                    (arith_expr.ArithWord
                                                                      w: {(Lit_Digits 1)}
                                                                    )
                                                                )
                                                            )
                                                          }
                                                        ]
                                                      )
                                                    }
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                    )
                                    (C {(local)} 
                                      {(Lit_VarLike 'r=') 
                                        (braced_var_sub
                                          token: <VSub_Name s1>
                                          suffix_op: 
                                            (suffix_op.Slice
                                              begin: 
                                                (arith_expr.Unary
                                                  op_id: Node_UnaryMinus
                                                  child: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                                )
                                            )
                                        )
                                      }
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:s1)
                                          op: Equal
                                          rhs: 
                                            {
                                              (word_part.ArithSub
                                                anode: 
                                                  (arith_expr.Binary
                                                    op_id: Arith_Slash
                                                    left: 
                                                      (arith_expr.VarRef
                                                        token: <Lit_ArithVarLike s1>
                                                      )
                                                    right: (arith_expr.ArithWord w:{(Lit_Digits 10)})
                                                  )
                                              )
                                            }
                                        )
                                      ]
                                    )
                                    (C {(printf)} {(DQ ('%s.%s %s'))} {(DQ (${ VSub_Name s1))} 
                                      {(DQ (${ VSub_Name r))} 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: <VSub_Name units>
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                                              )
                                          )
                                        )
                                      }
                                    )
                                  ]
                                )
                            )
                            (command.ShFunction
                              name: size
                              body: 
                                (command.BraceGroup
                                  children: [
                                    (C {(local)} {(Lit_VarLike 's1=') ($ VSub_Number '$1')})
                                    (C {(local)} {(Lit_VarLike 's2=') ($ VSub_Number '$2')})
                                    (C {(local)} 
                                      {(Lit_VarLike 'out=') 
                                        (DQ 
                                          (command_sub
                                            left_token: <Left_DollarParen '$('>
                                            command_list: 
                                              (command.CommandList
                                                children: [
                                                  (C {(padl)} {(DQ (${ VSub_Name s1))} 
                                                    {(DQ (${ VSub_Name s2))}
                                                  )
                                                ]
                                              )
                                          ) (' KiB')
                                        )
                                      }
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (command.DBracket
                                                  expr: 
                                                    (bool_expr.Binary
                                                      op_id: BoolBinary_gt
                                                      left: {(${ VSub_Name s1)}
                                                      right: {(1024)}
                                                    )
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:s1)
                                                  op: Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Left_DollarParen '$('>
                                                        command_list: 
                                                          (command.CommandList
                                                            children: [
                                                              (C {(human)} {(${ VSub_Name s1)})
                                                            ]
                                                          )
                                                      )
                                                    }
                                                )
                                              ]
                                            )
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (command.Sentence
                                                      child: 
                                                        (command.DBracket
                                                          expr: 
                                                            (bool_expr.Binary
                                                              op_id: BoolBinary_gt
                                                              left: {(${ VSub_Name s2)}
                                                              right: {(1024)}
                                                            )
                                                        )
                                                      terminator: <Op_Semi ';'>
                                                    )
                                                  ]
                                                  action: [
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (sh_lhs_expr.Name name:s2)
                                                          op: Equal
                                                          rhs: 
                                                            {
                                                              (command_sub
                                                                left_token: <Left_DollarParen '$('>
                                                                command_list: 
                                                                  (command.CommandList
                                                                    children: [
                                                                      (C {(human)} {(${ VSub_Name s2)})
                                                                    ]
                                                                  )
                                                              )
                                                            }
                                                        )
                                                      ]
                                                    )
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (sh_lhs_expr.Name name:s1)
                                                          op: Equal
                                                          rhs: 
                                                            {
                                                              (command_sub
                                                                left_token: <Left_DollarParen '$('>
                                                                command_list: 
                                                                  (command.CommandList
                                                                    children: [
                                                                      (C {(padl)} 
                                                                        {(DQ (${ VSub_Name s1))} {(DQ (${ VSub_Name s2))}
                                                                      )
                                                                    ]
                                                                  )
                                                              )
                                                            }
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:out)
                                                  op: PlusEqual
                                                  rhs: {(DQ (' (') (${ VSub_Name s1) (')'))}
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (C {(echo)} {(DQ (${ VSub_Name out))})
                                  ]
                                )
                            )
                            (C {(einfo)} 
                              {
                                (DQ ('Final size of build directory: ') 
                                  (command_sub
                                    left_token: <Left_DollarParen '$('>
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(size)} 
                                            {
                                              (braced_var_sub
                                                token: <VSub_Name nsz>
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                                                  )
                                              )
                                            } 
                                            {
                                              (braced_var_sub
                                                token: <VSub_Name isz>
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                                                  )
                                              )
                                            }
                                          )
                                        ]
                                      )
                                  )
                                )
                              }
                            )
                            (C {(einfo)} 
                              {
                                (DQ ('Final size of installed tree:  ') 
                                  (command_sub
                                    left_token: <Left_DollarParen '$('>
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(size)} 
                                            {
                                              (braced_var_sub
                                                token: <VSub_Name isz>
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                                                  )
                                              )
                                            } 
                                            {
                                              (braced_var_sub
                                                token: <VSub_Name nsz>
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                                                  )
                                              )
                                            }
                                          )
                                        ]
                                      )
                                  )
                                )
                              }
                            )
                          ]
                        )
                    )
                    (C {(__vecho)})
                  ]
                )
              ]
            )
            (C {(cd)} {(DQ (${ VSub_Name PORTAGE_BUILDDIR)) (/build-info)})
            (C {(KW_Set set)} {(-f)})
            (C {(local)} {(f)} {(x)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: Equal
                  rhs: 
                    {
                      (single_quoted
                        left: <Left_SingleQuoteC "$'">
                        tokens: [
                          <Char_Literals ' '>
                          <Char_OneChar '\\t'>
                          <Char_OneChar '\\n'>
                          <Char_OneChar '\\r'>
                        ]
                      )
                    }
                )
              ]
            )
            (command.ForEach
              iter_name: f
              iter_words: [
                {(CATEGORY)}
                {(DEFINED_PHASES)}
                {(FEATURES)}
                {(INHERITED)}
                {(IUSE)}
                {(PF)}
                {(PKGUSE)}
                {(SLOT)}
                {(KEYWORDS)}
                {(HOMEPAGE)}
                {(DESCRIPTION)}
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:x)
                          op: Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Left_DollarParen '$('>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(echo)} {(-n)} 
                                        {(braced_var_sub token:<VSub_Name f> prefix_op:VSub_Bang)}
                                      )
                                    ]
                                  )
                              )
                            }
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: (bool_expr.Unary op_id:BoolUnary_n child:{($ VSub_DollarName '$x')})
                        )
                        (command.Simple
                          words: [{(echo)} {(DQ ($ VSub_DollarName '$x'))}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {($ VSub_DollarName '$f')}
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: BoolBinary_GlobNEqual
                              left: {($ VSub_DollarName '$CATEGORY')}
                              right: {(virtual)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ForEach
                      iter_name: f
                      iter_words: [
                        {(ASFLAGS)}
                        {(CBUILD)}
                        {(CC)}
                        {(CFLAGS)}
                        {(CHOST)}
                        {(CTARGET)}
                        {(CXX)}
                        {(CXXFLAGS)}
                        {(EXTRA_ECONF)}
                        {(EXTRA_EINSTALL)}
                        {(EXTRA_MAKE)}
                        {(LDFLAGS)}
                        {(LIBCFLAGS)}
                        {(LIBCXXFLAGS)}
                        {(QA_CONFIGURE_OPTIONS)}
                        {(QA_DESKTOP_FILE)}
                        {(QA_PREBUILT)}
                        {(PROVIDES_EXCLUDE)}
                        {(REQUIRES_EXCLUDE)}
                      ]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:x)
                                  op: Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Left_DollarParen '$('>
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(echo)} {(-n)} 
                                                {
                                                  (braced_var_sub
                                                    token: <VSub_Name f>
                                                    prefix_op: VSub_Bang
                                                  )
                                                }
                                              )
                                            ]
                                          )
                                      )
                                    }
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Op_DAmp]
                              children: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: BoolUnary_n
                                      child: {($ VSub_DollarName '$x')}
                                    )
                                )
                                (command.Simple
                                  words: [{(echo)} {(DQ ($ VSub_DollarName '$x'))}]
                                  redirects: [
                                    (redir.Redir
                                      op: <Redir_Great '>'>
                                      fd: 16777215
                                      arg_word: {($ VSub_DollarName '$f')}
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.ForEach
                      iter_name: f
                      iter_words: [{(QA_AM_MAINTAINER_MODE)}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.AndOr
                              ops: [Op_DAmp]
                              children: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: BoolUnary_n
                                      child: 
                                        {(braced_var_sub token:<VSub_Name f> prefix_op:VSub_Bang)}
                                    )
                                )
                                (command.Simple
                                  words: [
                                    {(echo)}
                                    {(DQ (braced_var_sub token:<VSub_Name f> prefix_op:VSub_Bang))}
                                  ]
                                  redirects: [
                                    (redir.Redir
                                      op: <Redir_Great '>'>
                                      fd: 16777215
                                      arg_word: {($ VSub_DollarName '$f')}
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(DQ (${ VSub_Name USE))}]
              redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(USE)})]
            )
            (command.Simple
              words: [
                {(echo)}
                {
                  (DQ 
                    (braced_var_sub
                      token: <VSub_Name EAPI>
                      suffix_op: (suffix_op.Unary op_id:VTest_ColonHyphen arg_word:{(0)})
                    )
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(EAPI)})]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(___eapi_has_prefix_variables)})
                            (command.DBracket
                              expr: (bool_expr.Unary op_id:BoolUnary_n child:{(${ VSub_Name EPREFIX)})
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(echo)} {(DQ (${ VSub_Name EPREFIX))}]
                      redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(EPREFIX)})]
                    )
                  ]
                )
              ]
            )
            (C {(KW_Set set)} {(Lit_Other '+') (f)})
            (C {(unset)} {(f)})
            (C {(cd)} {(DQ (${ VSub_Name PORTAGE_PYM_PATH))})
            (command.Pipeline
              children: [
                (C {(__save_ebuild_env)} {(--exclude-init-phases)})
                (command.Simple
                  words: [
                    {(__filter_readonly_variables)}
                    {(--filter-path)}
                    {(--filter-sandbox)}
                    {(--allow-extra-vars)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(DQ (${ VSub_Name PORTAGE_BUILDDIR)) (/build-info/environment)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(assert)} {(DQ ('__save_ebuild_env failed'))})
            (command.AndOr
              ops: [Op_DPipe]
              children: [(C {(cd)} {(DQ (${ VSub_Name PORTAGE_BUILDDIR)) (/build-info)}) (C {(die)})]
            )
            (C {(${ VSub_Name PORTAGE_BZIP2_COMMAND)} {(-f9)} {(environment)})
            (C {(cp)} {(DQ (${ VSub_Name EBUILD))} {(DQ (${ VSub_Name PF) (.ebuild))})
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_LBracket '[')} {(-n)} {(DQ (${ VSub_Name PORTAGE_REPO_NAME))} 
                  {(Lit_RBracket ']')}
                )
                (command.Simple
                  words: [{(echo)} {(DQ (${ VSub_Name PORTAGE_REPO_NAME))}]
                  redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(repository)})]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(has)} {(nostrip)} {(${ VSub_Name FEATURES)} {(${ VSub_Name RESTRICT)})
                        (C {(has)} {(strip)} {(${ VSub_Name RESTRICT)})
                      ]
                    )
                  ]
                  action: [
                    (command.Simple
                      redirects: [
                        (redir.Redir
                          op: <Redir_DGreat '>>'>
                          fd: 16777215
                          arg_word: {(DEBUGBUILD)}
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (C {(trap)} {(-)} {(SIGINT)} {(SIGQUIT)})
          ]
        )
    )
    (command.ShFunction
      name: __dyn_help
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)})
            (C {(echo)} {(DQ (Portage))})
            (C {(echo)} {(DQ ('Copyright 1999-2010 Gentoo Foundation'))})
            (C {(echo)})
            (C {(echo)} {(DQ ('How to use the ebuild command:'))})
            (C {(echo)})
            (C {(echo)} {(DQ ('The first argument to ebuild should be an existing .ebuild file.'))})
            (C {(echo)})
            (C {(echo)} {(DQ ('One or more of the following options can then be specified.  If more'))})
            (C {(echo)} {(DQ ('than one option is specified, each will be executed in order.'))})
            (C {(echo)})
            (C {(echo)} {(DQ ('  help        : show this help screen'))})
            (C {(echo)} {(DQ ('  pretend     : execute package specific pretend actions'))})
            (C {(echo)} {(DQ ('  setup       : execute package specific setup actions'))})
            (C {(echo)} {(DQ ('  fetch       : download source archive(s) and patches'))})
            (C {(echo)} {(DQ ('  nofetch     : display special fetch instructions'))})
            (C {(echo)} {(DQ ('  digest      : create a manifest file for the package'))})
            (C {(echo)} {(DQ ('  manifest    : create a manifest file for the package'))})
            (C {(echo)} {(DQ ('  unpack      : unpack sources (auto-dependencies if needed)'))})
            (C {(echo)} {(DQ ('  prepare     : prepare sources (auto-dependencies if needed)'))})
            (C {(echo)} {(DQ ('  configure   : configure sources (auto-fetch/unpack if needed)'))})
            (C {(echo)} 
              {(DQ ('  compile     : compile sources (auto-fetch/unpack/configure if needed)'))}
            )
            (C {(echo)} 
              {(DQ ('  test        : test package (auto-fetch/unpack/configure/compile if needed)'))}
            )
            (C {(echo)} {(DQ ('  preinst     : execute pre-install instructions'))})
            (C {(echo)} {(DQ ('  postinst    : execute post-install instructions'))})
            (C {(echo)} 
              {(DQ ('  install     : install the package to the temporary install directory'))}
            )
            (C {(echo)} 
              {(DQ ('  qmerge      : merge image into live filesystem, recording files in db'))}
            )
            (C {(echo)} {(DQ ('  merge       : do fetch, unpack, compile, install and qmerge'))})
            (C {(echo)} {(DQ ('  prerm       : execute pre-removal instructions'))})
            (C {(echo)} {(DQ ('  postrm      : execute post-removal instructions'))})
            (C {(echo)} {(DQ ('  unmerge     : remove package from live filesystem'))})
            (C {(echo)} {(DQ ('  config      : execute package specific configuration actions'))})
            (C {(echo)} 
              {(DQ ('  package     : create a tarball package in ') (${ VSub_Name PKGDIR) (/All))}
            )
            (C {(echo)} {(DQ ('  rpm         : build a RedHat RPM package'))})
            (C {(echo)} {(DQ ('  clean       : clean up all source and temporary files'))})
            (C {(echo)})
            (C {(echo)} {(DQ ('The following settings will be used for the ebuild process:'))})
            (C {(echo)})
            (C {(echo)} {(DQ ('  package     : ') (${ VSub_Name PF))})
            (C {(echo)} {(DQ ('  slot        : ') (${ VSub_Name SLOT))})
            (C {(echo)} {(DQ ('  category    : ') (${ VSub_Name CATEGORY))})
            (C {(echo)} {(DQ ('  description : ') (${ VSub_Name DESCRIPTION))})
            (C {(echo)} {(DQ ('  system      : ') (${ VSub_Name CHOST))})
            (C {(echo)} {(DQ ('  c flags     : ') (${ VSub_Name CFLAGS))})
            (C {(echo)} {(DQ ('  c++ flags   : ') (${ VSub_Name CXXFLAGS))})
            (C {(echo)} {(DQ ('  make flags  : ') (${ VSub_Name MAKEOPTS))})
            (C {(echo)} {(-n)} {(DQ ('  build mode  : '))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Op_DPipe]
                          children: [
                            (C {(has)} {(nostrip)} {(${ VSub_Name FEATURES)} {(${ VSub_Name RESTRICT)})
                            (C {(has)} {(strip)} {(${ VSub_Name RESTRICT)})
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(echo)} {(DQ ('debug (large)'))})]
                )
              ]
              else_action: [(C {(echo)} {(DQ ('production (stripped)'))})]
            )
            (C {(echo)} {(DQ ('  merge to    : ') (${ VSub_Name ROOT))})
            (C {(echo)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_LBracket '[')} {(-n)} {(DQ ($ VSub_DollarName '$USE'))} 
                          {(Lit_RBracket ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ 
                          (
'Additionally, support for the following optional features will be enabled:'
                          )
                        )
                      }
                    )
                    (C {(echo)})
                    (C {(echo)} {(DQ ('  ') (${ VSub_Name USE))})
                  ]
                )
              ]
            )
            (C {(echo)})
          ]
        )
    )
    (command.ShFunction
      name: __ebuild_arg_to_phase
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_LBracket '[')} {($ VSub_Pound '$#')} {(-ne)} {(1)} {(Lit_RBracket ']')})
                (C {(die)} 
                  {
                    (DQ ('expected exactly 1 arg, got ') ($ VSub_Pound '$#') (': ') ($ VSub_Star '$*'))
                  }
                )
              ]
            )
            (C {(local)} {(Lit_VarLike 'arg=') ($ VSub_Number '$1')})
            (C {(local)} {(Lit_VarLike 'phase_func=') (DQ )})
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$arg'))}
              arms: [
                (case_arm
                  pat_list: [{(pretend)}]
                  action: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(___eapi_has_pkg_pretend)})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:phase_func)
                              op: Equal
                              rhs: {(pkg_pretend)}
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(setup)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:phase_func)
                          op: Equal
                          rhs: {(pkg_setup)}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(nofetch)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:phase_func)
                          op: Equal
                          rhs: {(pkg_nofetch)}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(unpack)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:phase_func)
                          op: Equal
                          rhs: {(src_unpack)}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(prepare)}]
                  action: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(___eapi_has_src_prepare)})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:phase_func)
                              op: Equal
                              rhs: {(src_prepare)}
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(configure)}]
                  action: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(___eapi_has_src_configure)})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:phase_func)
                              op: Equal
                              rhs: {(src_configure)}
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(compile)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:phase_func)
                          op: Equal
                          rhs: {(src_compile)}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(test)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:phase_func)
                          op: Equal
                          rhs: {(src_test)}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(install)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:phase_func)
                          op: Equal
                          rhs: {(src_install)}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(preinst)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:phase_func)
                          op: Equal
                          rhs: {(pkg_preinst)}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(postinst)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:phase_func)
                          op: Equal
                          rhs: {(pkg_postinst)}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(prerm)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:phase_func)
                          op: Equal
                          rhs: {(pkg_prerm)}
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(postrm)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:phase_func)
                          op: Equal
                          rhs: {(pkg_postrm)}
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:BoolUnary_z child:{($ VSub_DollarName '$phase_func')})
                )
                (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(echo)} {(DQ ($ VSub_DollarName '$phase_func'))})
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
        )
    )
    (command.ShFunction
      name: __ebuild_phase_funcs
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_LBracket '[')} {($ VSub_Pound '$#')} {(-ne)} {(2)} {(Lit_RBracket ']')})
                (C {(die)} 
                  {
                    (DQ ('expected exactly 2 args, got ') ($ VSub_Pound '$#') (': ') ($ VSub_Star '$*'))
                  }
                )
              ]
            )
            (C {(local)} {(Lit_VarLike 'eapi=') ($ VSub_Number '$1')})
            (C {(local)} {(Lit_VarLike 'phase_func=') ($ VSub_Number '$2')})
            (C {(local)} 
              {(Lit_VarLike 'all_phases=') 
                (DQ ('src_compile pkg_config src_configure pkg_info\n') 
                  ('\t\tsrc_install pkg_nofetch pkg_postinst pkg_postrm pkg_preinst\n') ('\t\tsrc_prepare pkg_prerm pkg_pretend pkg_setup src_test src_unpack')
                )
              }
            )
            (C {(local)} {(x)})
            (command.ForEach
              iter_name: x
              iter_words: [{(${ VSub_Name all_phases)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(eval)} 
                      {
                        (DQ (default_) (${ VSub_Name x) ('() {\n') ('\t\t\tdie ') 
                          (word_part.EscapedLiteral
                            token: <Lit_EscapedChar '\\"'>
                          ) (default_) (${ VSub_Name x) ("() is not supported in EAPI='") (${ VSub_Name eapi) ("' in phase ") 
                          (${ VSub_Name phase_func) (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) ('\n') ('\t\t}')
                        )
                      }
                    )
                  ]
                )
            )
            (C {(eval)} 
              {(DQ ('default() {\n') ('\t\tdefault_') (${ VSub_Name phase_func) ('\n') ('\t}'))}
            )
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$eapi'))}
              arms: [
                (case_arm
                  pat_list: [{(0)} {(1)}]
                  action: [
                    (command.ForEach
                      iter_name: x
                      iter_words: [{(pkg_nofetch)} {(src_unpack)} {(src_test)}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.AndOr
                              ops: [Op_DPipe]
                              children: [
                                (command.Simple
                                  words: [{(declare)} {(-F)} {($ VSub_DollarName '$x')}]
                                  redirects: [
                                    (redir.Redir
                                      op: <Redir_Great '>'>
                                      fd: 16777215
                                      arg_word: {(/dev/null)}
                                    )
                                  ]
                                )
                                (C {(eval)} 
                                  {
                                    (DQ ($ VSub_DollarName '$x') ('() { __eapi0_') 
                                      ($ VSub_DollarName '$x') ('; }')
                                    )
                                  }
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.Pipeline
                                  children: [
                                    (command.Simple
                                      words: [{(declare)} {(-F)} {(src_compile)}]
                                      redirects: [
                                        (redir.Redir
                                          op: <Redir_Great '>'>
                                          fd: 16777215
                                          arg_word: {(/dev/null)}
                                        )
                                      ]
                                    )
                                  ]
                                  negated: T
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.Case
                              to_match: {(DQ ($ VSub_DollarName '$eapi'))}
                              arms: [
                                (case_arm
                                  pat_list: [{(0)}]
                                  action: [
                                    (command.ShFunction
                                      name: src_compile
                                      body: 
                                        (command.BraceGroup
                                          children: [
                                            (command.Sentence
                                              child: (C {(__eapi0_src_compile)})
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                        )
                                    )
                                  ]
                                )
                                (case_arm
                                  pat_list: [{(Lit_Star '*')}]
                                  action: [
                                    (command.ShFunction
                                      name: src_compile
                                      body: 
                                        (command.BraceGroup
                                          children: [
                                            (command.Sentence
                                              child: (C {(__eapi1_src_compile)})
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                        )
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(Lit_Star '*')}]
                  action: [
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name phase_func)}
                              right: {(pkg_nofetch)}
                            )
                        )
                        (command.ShFunction
                          name: default_pkg_nofetch
                          body: 
                            (command.BraceGroup
                              children: [
                                (command.Sentence
                                  child: (C {(__eapi0_pkg_nofetch)})
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                            )
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name phase_func)}
                              right: {(src_unpack)}
                            )
                        )
                        (command.ShFunction
                          name: default_src_unpack
                          body: 
                            (command.BraceGroup
                              children: [
                                (command.Sentence
                                  child: (C {(__eapi0_src_unpack)})
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                            )
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name phase_func)}
                              right: {(src_test)}
                            )
                        )
                        (command.ShFunction
                          name: default_src_test
                          body: 
                            (command.BraceGroup
                              children: [
                                (command.Sentence
                                  child: (C {(__eapi0_src_test)})
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                            )
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name phase_func)}
                              right: {(src_prepare)}
                            )
                        )
                        (command.ShFunction
                          name: default_src_prepare
                          body: 
                            (command.BraceGroup
                              children: [
                                (command.Sentence
                                  child: (C {(__eapi2_src_prepare)})
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                            )
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name phase_func)}
                              right: {(src_configure)}
                            )
                        )
                        (command.ShFunction
                          name: default_src_configure
                          body: 
                            (command.BraceGroup
                              children: [
                                (command.Sentence
                                  child: (C {(__eapi2_src_configure)})
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                            )
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name phase_func)}
                              right: {(src_compile)}
                            )
                        )
                        (command.ShFunction
                          name: default_src_compile
                          body: 
                            (command.BraceGroup
                              children: [
                                (command.Sentence
                                  child: (C {(__eapi2_src_compile)})
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                            )
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{(declare)} {(-F)} {(pkg_nofetch)}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                        (command.ShFunction
                          name: pkg_nofetch
                          body: 
                            (command.BraceGroup
                              children: [
                                (command.Sentence
                                  child: (C {(default)})
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                            )
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{(declare)} {(-F)} {(src_unpack)}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                        (command.ShFunction
                          name: src_unpack
                          body: 
                            (command.BraceGroup
                              children: [
                                (command.Sentence
                                  child: (C {(default)})
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                            )
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{(declare)} {(-F)} {(src_prepare)}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                        (command.ShFunction
                          name: src_prepare
                          body: 
                            (command.BraceGroup
                              children: [
                                (command.Sentence
                                  child: (C {(default)})
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                            )
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{(declare)} {(-F)} {(src_configure)}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                        (command.ShFunction
                          name: src_configure
                          body: 
                            (command.BraceGroup
                              children: [
                                (command.Sentence
                                  child: (C {(default)})
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                            )
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{(declare)} {(-F)} {(src_compile)}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                        (command.ShFunction
                          name: src_compile
                          body: 
                            (command.BraceGroup
                              children: [
                                (command.Sentence
                                  child: (C {(default)})
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                            )
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{(declare)} {(-F)} {(src_test)}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                        (command.ShFunction
                          name: src_test
                          body: 
                            (command.BraceGroup
                              children: [
                                (command.Sentence
                                  child: (C {(default)})
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                            )
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.Pipeline
                                  children: [(C {(has)} {(${ VSub_Name eapi)} {(2)} {(3)})]
                                  negated: T
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.AndOr
                              ops: [Op_DAmp]
                              children: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(${ VSub_Name phase_func)}
                                      right: {(src_install)}
                                    )
                                )
                                (command.ShFunction
                                  name: default_src_install
                                  body: 
                                    (command.BraceGroup
                                      children: [
                                        (command.Sentence
                                          child: (C {(__eapi4_src_install)})
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                    )
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Op_DPipe]
                              children: [
                                (command.Simple
                                  words: [{(declare)} {(-F)} {(src_install)}]
                                  redirects: [
                                    (redir.Redir
                                      op: <Redir_Great '>'>
                                      fd: 16777215
                                      arg_word: {(/dev/null)}
                                    )
                                  ]
                                )
                                (command.ShFunction
                                  name: src_install
                                  body: 
                                    (command.BraceGroup
                                      children: [
                                        (command.Sentence
                                          child: (C {(default)})
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                    )
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.Pipeline
                                  children: [
                                    (C {(has)} {(${ VSub_Name eapi)} {(2)} {(3)} {(4)} {(4-python)} 
                                      {(4-slot-abi)} {(5)} {(5-progress)} {(5-hdepend)}
                                    )
                                  ]
                                  negated: T
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.AndOr
                              ops: [Op_DAmp]
                              children: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(${ VSub_Name phase_func)}
                                      right: {(src_prepare)}
                                    )
                                )
                                (command.ShFunction
                                  name: default_src_prepare
                                  body: 
                                    (command.BraceGroup
                                      children: [
                                        (command.Sentence
                                          child: (C {(__eapi6_src_prepare)})
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                    )
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Op_DAmp]
                              children: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(${ VSub_Name phase_func)}
                                      right: {(src_install)}
                                    )
                                )
                                (command.ShFunction
                                  name: default_src_install
                                  body: 
                                    (command.BraceGroup
                                      children: [
                                        (command.Sentence
                                          child: (C {(__eapi6_src_install)})
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                    )
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Op_DPipe]
                              children: [
                                (command.Simple
                                  words: [{(declare)} {(-F)} {(src_prepare)}]
                                  redirects: [
                                    (redir.Redir
                                      op: <Redir_Great '>'>
                                      fd: 16777215
                                      arg_word: {(/dev/null)}
                                    )
                                  ]
                                )
                                (command.ShFunction
                                  name: src_prepare
                                  body: 
                                    (command.BraceGroup
                                      children: [
                                        (command.Sentence
                                          child: (C {(default)})
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                    )
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: __ebuild_main
      body: 
        (command.BraceGroup
          children: [
            (C {(export)} 
              {(Lit_VarLike 'EBUILD_MASTER_PID=') 
                (braced_var_sub
                  token: <VSub_Name BASHPID>
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: VTest_ColonHyphen
                      arg_word: 
                        {
                          (command_sub
                            left_token: <Left_DollarParen '$('>
                            command_list: (command.CommandList children:[(C {(__bashpid)})])
                          )
                        }
                    )
                )
              }
            )
            (C {(trap)} {(SQ <'exit 1'>)} {(SIGTERM)})
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:BoolUnary_z child:{(${ VSub_Name S)})
                )
                (C {(export)} {(Lit_VarLike 'S=') (${ VSub_Name WORKDIR) (/) (${ VSub_Name P)})
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: BoolUnary_s
                              child: {($ VSub_DollarName '$SANDBOX_LOG')}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(local)} {(Lit_VarLike 'x=')})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: (bool_expr.Unary op_id:BoolUnary_n child:{(SANDBOX_ON)})
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:x)
                                  op: Equal
                                  rhs: {($ VSub_DollarName '$SANDBOX_ON')}
                                )
                              ]
                            )
                            (C {(export)} {(Lit_VarLike 'SANDBOX_ON=') (0)})
                          ]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$SANDBOX_LOG'))})
                        (C {(die)} 
                          {
                            (DQ ("failed to remove stale sandbox log: '") 
                              ($ VSub_DollarName '$SANDBOX_LOG') ("'")
                            )
                          }
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: BoolUnary_n
                                      child: {($ VSub_DollarName '$x')}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(export)} {(Lit_VarLike 'SANDBOX_ON=') ($ VSub_DollarName '$x')})
                          ]
                        )
                      ]
                    )
                    (C {(unset)} {(x)})
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(has)} {(ccache)} {($ VSub_DollarName '$FEATURES')})
                (C {(export)} {(Lit_VarLike 'CCACHE_DISABLE=') (1)})
              ]
            )
            (C {(local)} 
              {(Lit_VarLike 'phase_func=') 
                (command_sub
                  left_token: <Left_DollarParen '$('>
                  command_list: 
                    (command.CommandList
                      children: [
                        (C {(__ebuild_arg_to_phase)} {(DQ ($ VSub_DollarName '$EBUILD_PHASE'))})
                      ]
                    )
                )
              }
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:BoolUnary_n child:{($ VSub_DollarName '$phase_func')})
                )
                (C {(__ebuild_phase_funcs)} {(DQ ($ VSub_DollarName '$EAPI'))} 
                  {(DQ ($ VSub_DollarName '$phase_func'))}
                )
              ]
            )
            (C {(unset)} {(phase_func)})
            (C {(__source_all_bashrcs)})
            (command.Case
              to_match: {(${ VSub_Number 1)}
              arms: [
                (case_arm
                  pat_list: [{(nofetch)}]
                  action: [(C {(__ebuild_phase_with_hooks)} {(pkg_nofetch)})]
                )
                (case_arm
                  pat_list: [{(prerm)} {(postrm)} {(preinst)} {(postinst)} {(config)} {(info)}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Op_DAmp]
                                  children: [
                                    (C {(has)} {(DQ (${ VSub_Number 1))} {(config)} {(info)})
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          words: [{(declare)} {(-F)} {(DQ (pkg_) (${ VSub_Number 1))}]
                                          redirects: [
                                            (redir.Redir
                                              op: <Redir_Great '>'>
                                              fd: 16777215
                                              arg_word: {(/dev/null)}
                                            )
                                          ]
                                        )
                                      ]
                                      negated: T
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(ewarn)} 
                              {
                                (DQ (pkg_) (${ VSub_Number 1) ("() is not defined: '") 
                                  (braced_var_sub
                                    token: <VSub_Name EBUILD>
                                    suffix_op: 
                                      (suffix_op.Unary
                                        op_id: VOp1_DPound
                                        arg_word: {('*') (Lit_Slash /)}
                                      )
                                  ) ("'")
                                )
                              }
                            )
                          ]
                        )
                      ]
                    )
                    (C {(export)} {(Lit_VarLike 'SANDBOX_ON=') (DQ (0))})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Op_DPipe]
                                  children: [
                                    (C {(Lit_LBracket '[')} {(DQ (${ VSub_Name PORTAGE_DEBUG))} 
                                      {(KW_Bang '!') (Lit_Equals '=')} {(DQ (1))} {(Lit_RBracket ']')}
                                    )
                                    (C {(Lit_LBracket '[')} 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: <VSub_Hyphen ->
                                            suffix_op: 
                                              (suffix_op.PatSub
                                                pat: {(x)}
                                                replace: (word.Empty)
                                                replace_mode: Undefined_Tok
                                              )
                                          )
                                        )
                                      } {(KW_Bang '!') (Lit_Equals '=')} {(DQ ($ VSub_Hyphen '$-'))} {(Lit_RBracket ']')}
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(__ebuild_phase_with_hooks)} {(pkg_) (${ VSub_Number 1)})]
                        )
                      ]
                      else_action: [
                        (C {(KW_Set set)} {(-x)})
                        (C {(__ebuild_phase_with_hooks)} {(pkg_) (${ VSub_Number 1)})
                        (C {(KW_Set set)} {(Lit_Other '+') (x)})
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: BoolUnary_n
                                      child: {($ VSub_DollarName '$PORTAGE_UPDATE_ENV')}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(cd)} {(DQ (${ VSub_Name PORTAGE_PYM_PATH))})
                            (command.Pipeline
                              children: [
                                (C {(__save_ebuild_env)} {(--exclude-init-phases)})
                                (C {(__filter_readonly_variables)} {(--filter-path)} 
                                  {(--filter-sandbox)} {(--allow-extra-vars)}
                                )
                                (command.Simple
                                  words: [{(${ VSub_Name PORTAGE_BZIP2_COMMAND)} {(-c)} {(-f9)}]
                                  redirects: [
                                    (redir.Redir
                                      op: <Redir_Great '>'>
                                      fd: 16777215
                                      arg_word: {(DQ ($ VSub_DollarName '$PORTAGE_UPDATE_ENV'))}
                                    )
                                  ]
                                )
                              ]
                              negated: F
                            )
                            (C {(assert)} {(DQ ('__save_ebuild_env failed'))})
                          ]
                        )
                      ]
                    )
                  ]
                )
                (case_arm
                  pat_list: [{(unpack)} {(prepare)} {(configure)} {(compile)} {(test)} {(clean)} {(install)}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: BoolBinary_GlobEqual
                                      left: 
                                        {
                                          (braced_var_sub
                                            token: <VSub_Name SANDBOX_DISABLED>
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op_id: VTest_ColonHyphen
                                                arg_word: {(0)}
                                              )
                                          )
                                        }
                                      right: {(0)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(export)} {(Lit_VarLike 'SANDBOX_ON=') (DQ (1))})]
                        )
                      ]
                      else_action: [(C {(export)} {(Lit_VarLike 'SANDBOX_ON=') (DQ (0))})]
                    )
                    (command.Case
                      to_match: {(DQ (${ VSub_Number 1))}
                      arms: [
                        (case_arm
                          pat_list: [{(configure)} {(compile)}]
                          action: [
                            (C {(local)} {(x)})
                            (command.ForEach
                              iter_name: x
                              iter_words: [
                                {(ASFLAGS)}
                                {(CCACHE_DIR)}
                                {(CCACHE_SIZE)}
                                {(CFLAGS)}
                                {(CXXFLAGS)}
                                {(LDFLAGS)}
                                {(LIBCFLAGS)}
                                {(LIBCXXFLAGS)}
                              ]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.AndOr
                                      ops: [Op_DAmp]
                                      children: [
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Binary
                                              op_id: BoolBinary_GlobEqual
                                              left: 
                                                {
                                                  (braced_var_sub
                                                    token: <VSub_Name x>
                                                    prefix_op: VSub_Bang
                                                    suffix_op: 
                                                      (suffix_op.Unary
                                                        op_id: VTest_Plus
                                                        arg_word: {(set)}
                                                      )
                                                  )
                                                }
                                              right: {(set)}
                                            )
                                        )
                                        (C {(export)} {($ VSub_DollarName '$x')})
                                      ]
                                    )
                                  ]
                                )
                            )
                            (C {(unset)} {(x)})
                            (command.AndOr
                              ops: [Op_DAmp Op_DAmp Op_DAmp]
                              children: [
                                (C {(has)} {(distcc)} {($ VSub_DollarName '$FEATURES')})
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: BoolUnary_n
                                      child: {($ VSub_DollarName '$DISTCC_DIR')}
                                    )
                                )
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: BoolBinary_GlobEqual
                                      left: 
                                        {
                                          (braced_var_sub
                                            token: <VSub_Name SANDBOX_WRITE>
                                            suffix_op: 
                                              (suffix_op.PatSub
                                                pat: {($ VSub_DollarName '$DISTCC_DIR')}
                                                replace_mode: Undefined_Tok
                                              )
                                          )
                                        }
                                      right: {($ VSub_DollarName '$SANDBOX_WRITE')}
                                    )
                                )
                                (C {(addwrite)} {(DQ ($ VSub_DollarName '$DISTCC_DIR'))})
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:x)
                                  op: Equal
                                  rhs: {(LIBDIR_) ($ VSub_DollarName '$ABI')}
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Op_DAmp]
                              children: [
                                (C {(Lit_LBracket '[')} {(-z)} 
                                  {(DQ ($ VSub_DollarName '$PKG_CONFIG_PATH'))} {(-a)} {(-n)} {(DQ ($ VSub_DollarName '$ABI'))} {(-a)} {(-n)} 
                                  {(DQ (braced_var_sub token:<VSub_Name x> prefix_op:VSub_Bang))} {(Lit_RBracket ']')}
                                )
                                (C {(export)} 
                                  {(Lit_VarLike 'PKG_CONFIG_PATH=') (${ VSub_Name EPREFIX) (/usr/) 
                                    (braced_var_sub
                                      token: <VSub_Name x>
                                      prefix_op: VSub_Bang
                                    ) (/pkgconfig)
                                  }
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.AndOr
                                          ops: [Op_DAmp]
                                          children: [
                                            (C {(has)} {(noauto)} {($ VSub_DollarName '$FEATURES')})
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.LogicalNot
                                                  child: 
                                                    (bool_expr.Unary
                                                      op_id: BoolUnary_f
                                                      child: 
                                                        {($ VSub_DollarName '$PORTAGE_BUILDDIR') 
                                                          (/.unpacked)
                                                        }
                                                    )
                                                )
                                            )
                                          ]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(echo)})
                                    (C {(echo)} {(DQ ("!!! We apparently haven't unpacked..."))} 
                                      {(DQ ('This is probably not what you'))}
                                    )
                                    (C {(echo)} {(DQ ('!!! want to be doing... You are using'))} 
                                      {(DQ ("FEATURES=noauto so I'll assume"))}
                                    )
                                    (C {(echo)} {(DQ ('!!! that you know what you are doing...'))} 
                                      {(DQ ('You have 5 seconds to abort...'))}
                                    )
                                    (C {(echo)})
                                    (C {(sleep)} {(5)})
                                  ]
                                )
                              ]
                            )
                            (C {(cd)} {(DQ ($ VSub_DollarName '$PORTAGE_BUILDDIR'))})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Lit_LBracket '[')} {(KW_Bang '!')} {(-d)} {(build-info)} 
                                          {(Lit_RBracket ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(mkdir)} {(build-info)})
                                    (C {(cp)} {(DQ ($ VSub_DollarName '$EBUILD'))} 
                                      {(DQ (build-info/) ($ VSub_DollarName '$PF') (.ebuild))}
                                    )
                                  ]
                                )
                              ]
                            )
                            (C {(export)} {(S)} {(D)})
                          ]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Op_DPipe]
                                  children: [
                                    (C {(Lit_LBracket '[')} {(DQ (${ VSub_Name PORTAGE_DEBUG))} 
                                      {(KW_Bang '!') (Lit_Equals '=')} {(DQ (1))} {(Lit_RBracket ']')}
                                    )
                                    (C {(Lit_LBracket '[')} 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: <VSub_Hyphen ->
                                            suffix_op: 
                                              (suffix_op.PatSub
                                                pat: {(x)}
                                                replace: (word.Empty)
                                                replace_mode: Undefined_Tok
                                              )
                                          )
                                        )
                                      } {(KW_Bang '!') (Lit_Equals '=')} {(DQ ($ VSub_Hyphen '$-'))} {(Lit_RBracket ']')}
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(__dyn_) (${ VSub_Number 1)})]
                        )
                      ]
                      else_action: [
                        (C {(KW_Set set)} {(-x)})
                        (C {(__dyn_) (${ VSub_Number 1)})
                        (C {(KW_Set set)} {(Lit_Other '+') (x)})
                      ]
                    )
                    (C {(export)} {(Lit_VarLike 'SANDBOX_ON=') (DQ (0))})
                  ]
                )
                (case_arm
                  pat_list: [{(help)} {(pretend)} {(setup)}]
                  action: [
                    (C {(export)} {(Lit_VarLike 'SANDBOX_ON=') (DQ (0))})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Op_DPipe]
                                  children: [
                                    (C {(Lit_LBracket '[')} {(DQ (${ VSub_Name PORTAGE_DEBUG))} 
                                      {(KW_Bang '!') (Lit_Equals '=')} {(DQ (1))} {(Lit_RBracket ']')}
                                    )
                                    (C {(Lit_LBracket '[')} 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: <VSub_Hyphen ->
                                            suffix_op: 
                                              (suffix_op.PatSub
                                                pat: {(x)}
                                                replace: (word.Empty)
                                                replace_mode: Undefined_Tok
                                              )
                                          )
                                        )
                                      } {(KW_Bang '!') (Lit_Equals '=')} {(DQ ($ VSub_Hyphen '$-'))} {(Lit_RBracket ']')}
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(__dyn_) (${ VSub_Number 1)})]
                        )
                      ]
                      else_action: [
                        (C {(KW_Set set)} {(-x)})
                        (C {(__dyn_) (${ VSub_Number 1)})
                        (C {(KW_Set set)} {(Lit_Other '+') (x)})
                      ]
                    )
                  ]
                )
                (case_arm pat_list:[{(_internal_test)}])
                (case_arm
                  pat_list: [{(Lit_Star '*')}]
                  action: [
                    (C {(export)} {(Lit_VarLike 'SANDBOX_ON=') (DQ (1))})
                    (C {(echo)} {(DQ ("Unrecognized arg '") (${ VSub_Number 1) ("'"))})
                    (C {(echo)})
                    (C {(__dyn_help)})
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(1)}
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [
                            (C {(has)} {(DQ (${ VSub_Number 1))} {(clean)} {(help)} {(info)} {(nofetch)})
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(umask)} {(002)})
                    (C {(cd)} {(DQ (${ VSub_Name PORTAGE_PYM_PATH))})
                    (command.Pipeline
                      children: [
                        (C {(__save_ebuild_env)})
                        (command.Simple
                          words: [{(__filter_readonly_variables)} {(--filter-features)}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(DQ ($ VSub_DollarName '$T') (/environment))}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (C {(assert)} {(DQ ('__save_ebuild_env failed'))})
                    (C {(chgrp)} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <VSub_Name PORTAGE_GRPNAME>
                            suffix_op: (suffix_op.Unary op_id:VTest_ColonHyphen arg_word:{(portage)})
                          )
                        )
                      } {(DQ ($ VSub_DollarName '$T') (/environment))}
                    )
                    (C {(chmod)} {(g) (Lit_Other '+') (w)} {(DQ ($ VSub_DollarName '$T') (/environment))})
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: BoolUnary_n
                      child: {($ VSub_DollarName '$PORTAGE_EBUILD_EXIT_FILE')}
                    )
                )
                (command.Simple
                  redirects: [
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_DollarName '$PORTAGE_EBUILD_EXIT_FILE'))}
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: BoolUnary_n
                              child: {($ VSub_DollarName '$PORTAGE_IPC_DAEMON')}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.DBracket
                      expr: 
                        (bool_expr.LogicalNot
                          child: 
                            (bool_expr.Unary
                              op_id: BoolUnary_s
                              child: {($ VSub_DollarName '$SANDBOX_LOG')}
                            )
                        )
                    )
                    (C {(DQ ($ VSub_DollarName '$PORTAGE_BIN_PATH')) (/ebuild-ipc)} 
                      {(ControlFlow_Exit exit)} {($ VSub_QMark '$?')}
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
  ]
)