(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:MISC_FUNCTIONS_ARGS)
          op: Equal
          rhs: {(DQ ($ VSub_At '$@'))}
          spids: [39]
        )
      ]
      spids: [39]
    )
    (C {(shift)} {($ VSub_Pound '$#')})
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(source)} {(DQ (${ VSub_Name PORTAGE_BIN_PATH) (/ebuild.sh))})
        (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
    )
    (FuncDef
      name: install_symlink_html_docs
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (Pipeline children:[(C {(___eapi_has_prefix_variables)})] negated:T)
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ED)
                          op: Equal
                          rhs: {(${ VSub_Name D)}
                          spids: [84]
                        )
                      ]
                      spids: [82]
                    )
                  ]
                  spids: [16777215 79]
                )
              ]
              spids: [16777215 90]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(cd)} {(DQ (${ VSub_Name ED))}) (C {(die)} {(DQ ('cd failed'))})]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name DOC_SYMLINKS_DIR))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:mydocdir)
                          op: Equal
                          spids: [135]
                        )
                        (assign_pair
                          lhs: (LhsName name:docdir)
                          op: Equal
                          spids: [137]
                        )
                      ]
                      spids: [133]
                    )
                    (ForEach
                      iter_name: docdir
                      iter_words: [
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name HTMLDOC_DIR>
                              suffix_op: 
                                (StringUnary
                                  op_id: VTest_ColonHyphen
                                  arg_word: {(does) (Lit_Slash /) (not) (Lit_Slash /) (exist)}
                                )
                              spids: [147 155]
                            )
                          )
                        }
                        {(DQ (${ VSub_Name PF) (/html))}
                        {(DQ (${ VSub_Name PF) (/HTML))}
                        {(DQ (${ VSub_Name P) (/html))}
                        {(DQ (${ VSub_Name P) (/HTML))}
                      ]
                      do_arg_iter: F
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-d)} 
                                          {(DQ (usr/share/doc/) (${ VSub_Name docdir))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:mydocdir)
                                          op: Equal
                                          rhs: {(DQ (/usr/share/doc/) (${ VSub_Name docdir))}
                                          spids: [211]
                                        )
                                      ]
                                      spids: [211]
                                    )
                                  ]
                                  spids: [16777215 208]
                                )
                              ]
                              spids: [16777215 220]
                            )
                          ]
                          spids: [188 223]
                        )
                      spids: [145 186]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name mydocdir))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_Local
                              pairs: [(assign_pair lhs:(LhsName name:mysympath) op:Equal spids:[247])]
                              spids: [245]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name SLOT))} {(-o)} 
                                          {
                                            (DQ 
                                              (BracedVarSub
                                                token: <VSub_Name SLOT>
                                                suffix_op: 
                                                  (StringUnary
                                                    op_id: VOp1_Percent
                                                    arg_word: {(Lit_Slash /) ('*')}
                                                  )
                                                spids: [265 270]
                                              )
                                            )
                                          } {(Lit_Other '=')} {(DQ (0))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:mysympath)
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ (${ VSub_Name DOC_SYMLINKS_DIR) (/) 
                                                (${ VSub_Name CATEGORY) (/) (${ VSub_Name PN)
                                              )
                                            }
                                          spids: [286]
                                        )
                                      ]
                                      spids: [286]
                                    )
                                  ]
                                  spids: [16777215 283]
                                )
                              ]
                              else_action: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:mysympath)
                                      op: Equal
                                      rhs: 
                                        {
                                          (DQ (${ VSub_Name DOC_SYMLINKS_DIR) (/) 
                                            (${ VSub_Name CATEGORY) (/) (${ VSub_Name PN) (-) 
                                            (BracedVarSub
                                              token: <VSub_Name SLOT>
                                              suffix_op: 
                                                (StringUnary
                                                  op_id: VOp1_Percent
                                                  arg_word: {(Lit_Slash /) ('*')}
                                                )
                                              spids: [319 324]
                                            )
                                          )
                                        }
                                      spids: [305]
                                    )
                                  ]
                                  spids: [305]
                                )
                              ]
                              spids: [302 328]
                            )
                            (C {(einfo)} 
                              {
                                (DQ ('Symlinking ') (${ VSub_Name mysympath) 
                                  (' to the HTML documentation')
                                )
                              }
                            )
                            (C {(dodir)} 
                              {(DQ (${ VSub_Name DOC_SYMLINKS_DIR) (/) (${ VSub_Name CATEGORY))}
                            )
                            (C {(dosym)} {(DQ (${ VSub_Name mydocdir))} {(DQ (${ VSub_Name mysympath))})
                          ]
                          spids: [16777215 242]
                        )
                      ]
                      spids: [16777215 370]
                    )
                  ]
                  spids: [16777215 130]
                )
              ]
              spids: [16777215 373]
            )
          ]
          spids: [69]
        )
      spids: [65 68]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:READLINK_F_WORKS) op:Equal rhs:{(DQ )} spids:[381])]
      spids: [381]
    )
    (FuncDef
      name: canonicalize
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_z child:{(${ VSub_Name READLINK_F_WORKS)})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: 
                                        {
                                          (CommandSubPart
                                            command_list: 
                                              (CommandList
                                                children: [
                                                  (SimpleCommand
                                                    words: [{(readlink)} {(-f)} {(--)} {(/../)}]
                                                    redirects: [
                                                      (Redir
                                                        op: <Redir_Great '2>'>
                                                        fd: 2
                                                        arg_word: {(/dev/null)}
                                                      )
                                                    ]
                                                  )
                                                ]
                                              )
                                            left_token: <Left_CommandSub '$('>
                                            spids: [413 424]
                                          )
                                        }
                                      right: {(DQ (/))}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:READLINK_F_WORKS)
                                  op: Equal
                                  rhs: {(true)}
                                  spids: [439]
                                )
                              ]
                              spids: [439]
                            )
                          ]
                          spids: [16777215 436]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:READLINK_F_WORKS)
                              op: Equal
                              rhs: {(false)}
                              spids: [446]
                            )
                          ]
                          spids: [446]
                        )
                      ]
                      spids: [443 450]
                    )
                  ]
                  spids: [16777215 406]
                )
              ]
              spids: [16777215 453]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(${ VSub_Name READLINK_F_WORKS)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(readlink)} {(-f)} {(--)} {(DQ ($ VSub_At '$@'))})
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [16777215 464]
                )
              ]
              spids: [16777215 481]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:f)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [487]
                )
                (assign_pair lhs:(LhsName name:b) op:Equal spids:[490])
                (assign_pair lhs:(LhsName name:n) op:Equal rhs:{(10)} spids:[492])
                (assign_pair
                  lhs: (LhsName name:wd)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(pwd)})])
                        left_token: <Left_CommandSub '$('>
                        spids: [496 498]
                      )
                    }
                  spids: [495]
                )
              ]
              spids: [485]
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [
                (Sentence
                  child: 
                    (DParen
                      child: 
                        (ArithBinary
                          op_id: Arith_Great
                          left: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:n))
                          right: (ArithWord w:{(Lit_Digits 0)})
                        )
                      spids: [503 513]
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (WhileUntil
                      keyword: <KW_While while>
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: 
                                (LogicalAnd
                                  left: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobEqual
                                      left: 
                                        {
                                          (BracedVarSub
                                            token: <VSub_Name f>
                                            suffix_op: 
                                              (Slice
                                                begin: 
                                                  (ArithUnary
                                                    op_id: Node_UnaryMinus
                                                    child: (ArithWord w:{(Lit_Digits 1)})
                                                  )
                                              )
                                            spids: [523 529]
                                          )
                                        }
                                      right: {(/)}
                                    )
                                  right: 
                                    (BoolBinary
                                      op_id: BoolBinary_gt
                                      left: 
                                        {
                                          (BracedVarSub
                                            token: <VSub_Name f>
                                            prefix_op: VSub_Pound
                                            spids: [537 540]
                                          )
                                        }
                                      right: {(1)}
                                    )
                                )
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      body: 
                        (DoGroup
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:f)
                                  op: Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name f>
                                        suffix_op: 
                                          (StringUnary
                                            op_id: VOp1_Percent
                                            arg_word: {(Lit_Slash /)}
                                          )
                                        spids: [553 557]
                                      )
                                    }
                                  spids: [552]
                                )
                              ]
                              spids: [552]
                            )
                          ]
                          spids: [549 560]
                        )
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:b)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name f>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VOp1_DPound
                                    arg_word: {('*') (Lit_Slash /)}
                                  )
                                spids: [564 569]
                              )
                            }
                          spids: [563]
                        )
                      ]
                      spids: [563]
                    )
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (SimpleCommand
                          words: [
                            {(cd)}
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name f>
                                  suffix_op: 
                                    (StringUnary
                                      op_id: VOp1_Percent
                                      arg_word: {(DQ (${ VSub_Name b))}
                                    )
                                  spids: [575 583]
                                )
                              )
                            }
                          ]
                          redirects: [(Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})]
                        )
                        (ControlFlow token:<ControlFlow_Break break>)
                      ]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (LogicalNot
                                      child: (BoolUnary op_id:BoolUnary_L child:{(${ VSub_Name b)})
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:f)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: (CommandList children:[(C {(pwd)} {(-P)})])
                                        left_token: <Left_CommandSub '$('>
                                        spids: [613 617]
                                      )
                                    }
                                  spids: [612]
                                )
                              ]
                              spids: [612]
                            )
                            (C {(echo)} 
                              {
                                (DQ 
                                  (BracedVarSub
                                    token: <VSub_Name f>
                                    suffix_op: 
                                      (StringUnary
                                        op_id: VOp1_Percent
                                        arg_word: {(Lit_Slash /)}
                                      )
                                    spids: [623 627]
                                  ) (/) (${ VSub_Name b)
                                )
                              }
                            )
                            (C {(cd)} {(DQ (${ VSub_Name wd))})
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(0)}
                            )
                          ]
                          spids: [16777215 609]
                        )
                      ]
                      spids: [16777215 649]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:f)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(readlink)} {(DQ (${ VSub_Name b))})]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [653 661]
                              )
                            }
                          spids: [652]
                        )
                      ]
                      spids: [652]
                    )
                  ]
                  spids: [516 664]
                )
            )
            (C {(cd)} {(DQ (${ VSub_Name wd))})
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [389]
        )
      spids: [385 388]
    )
    (FuncDef
      name: prepcompress
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              flags: [-a]
              pairs: [
                (assign_pair lhs:(LhsName name:include) op:Equal spids:[694])
                (assign_pair lhs:(LhsName name:exclude) op:Equal spids:[696])
                (assign_pair lhs:(LhsName name:incl_d) op:Equal spids:[698])
                (assign_pair lhs:(LhsName name:incl_f) op:Equal spids:[700])
              ]
              spids: [690]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair lhs:(LhsName name:f) op:Equal spids:[705])
                (assign_pair lhs:(LhsName name:g) op:Equal spids:[707])
                (assign_pair lhs:(LhsName name:i) op:Equal spids:[709])
                (assign_pair lhs:(LhsName name:real_f) op:Equal spids:[711])
                (assign_pair lhs:(LhsName name:real_d) op:Equal spids:[713])
              ]
              spids: [703]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (Pipeline children:[(C {(___eapi_has_prefix_variables)})] negated:T)
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ED)
                          op: Equal
                          rhs: {(${ VSub_Name D)}
                          spids: [728]
                        )
                      ]
                      spids: [726]
                    )
                  ]
                  spids: [16777215 723]
                )
              ]
              spids: [16777215 734]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:real_d)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(canonicalize)} {(DQ (${ VSub_Name ED))})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [743 751]
                      )
                    }
                  spids: [742]
                )
              ]
              spids: [742]
            )
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_Less
                  left: (ArithVarRef name:i)
                  right: 
                    (ArithWord
                      w: 
                        {
                          (BracedVarSub
                            token: <VSub_Name PORTAGE_DOCOMPRESS>
                            prefix_op: VSub_Pound
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [769 775]
                          )
                        }
                    )
                )
              update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i))
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:real_f)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(canonicalize)} 
                                        {
                                          (DQ (${ VSub_Name ED) 
                                            (BracedVarSub
                                              token: <VSub_Name PORTAGE_DOCOMPRESS>
                                              bracket_op: (ArrayIndex expr:(ArithVarRef name:i))
                                              spids: [796 801]
                                            )
                                          )
                                        }
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [789 803]
                              )
                            }
                          spids: [788]
                        )
                      ]
                      spids: [788]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:f)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name real_f>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VOp1_Pound
                                    arg_word: {(DQ (${ VSub_Name real_d))}
                                  )
                                spids: [807 815]
                              )
                            }
                          spids: [806]
                        )
                      ]
                      spids: [806]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (AndOr
                              ops: [Op_DAmp]
                              children: [
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobNEqual
                                      left: {(${ VSub_Name real_f)}
                                      right: {(DQ (${ VSub_Name f))}
                                    )
                                )
                                (DBracket
                                  expr: 
                                    (LogicalOr
                                      left: (BoolUnary op_id:BoolUnary_d child:{(${ VSub_Name real_f)})
                                      right: 
                                        (BoolUnary
                                          op_id: BoolUnary_f
                                          child: {(${ VSub_Name real_f)}
                                        )
                                    )
                                )
                              ]
                            )
                          ]
                          action: [
                            (C 
                              {(include) (Lit_Other '[') 
                                (BracedVarSub
                                  token: <VSub_Name include>
                                  prefix_op: VSub_Pound
                                  bracket_op: (WholeArray op_id:Lit_At)
                                  spids: [862 868]
                                ) (Lit_Other ']') (Lit_Other '=') 
                                (BracedVarSub
                                  token: <VSub_Name f>
                                  suffix_op: 
                                    (StringUnary
                                      op_id: VTest_ColonHyphen
                                      arg_word: {(Lit_Slash /)}
                                    )
                                  spids: [871 875]
                                )
                              }
                            )
                          ]
                          spids: [16777215 857]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_ge
                                      left: {(${ VSub_Name i)}
                                      right: {(3)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(ewarn)} {(DQ ('prepcompress:'))} 
                              {
                                (DQ ("ignoring nonexistent path '") 
                                  (BracedVarSub
                                    token: <VSub_Name PORTAGE_DOCOMPRESS>
                                    bracket_op: (ArrayIndex expr:(ArithVarRef name:i))
                                    spids: [906 911]
                                  ) ("'")
                                )
                              }
                            )
                          ]
                          spids: [878 893]
                        )
                      ]
                      spids: [16777215 916]
                    )
                  ]
                  spids: [785 919]
                )
            )
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_Less
                  left: (ArithVarRef name:i)
                  right: 
                    (ArithWord
                      w: 
                        {
                          (BracedVarSub
                            token: <VSub_Name PORTAGE_DOCOMPRESS_SKIP>
                            prefix_op: VSub_Pound
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [937 943]
                          )
                        }
                    )
                )
              update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i))
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:real_f)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(canonicalize)} 
                                        {
                                          (DQ (${ VSub_Name ED) 
                                            (BracedVarSub
                                              token: <VSub_Name PORTAGE_DOCOMPRESS_SKIP>
                                              bracket_op: (ArrayIndex expr:(ArithVarRef name:i))
                                              spids: [964 969]
                                            )
                                          )
                                        }
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [957 971]
                              )
                            }
                          spids: [956]
                        )
                      ]
                      spids: [956]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:f)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name real_f>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VOp1_Pound
                                    arg_word: {(DQ (${ VSub_Name real_d))}
                                  )
                                spids: [975 983]
                              )
                            }
                          spids: [974]
                        )
                      ]
                      spids: [974]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (AndOr
                              ops: [Op_DAmp]
                              children: [
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobNEqual
                                      left: {(${ VSub_Name real_f)}
                                      right: {(DQ (${ VSub_Name f))}
                                    )
                                )
                                (DBracket
                                  expr: 
                                    (LogicalOr
                                      left: (BoolUnary op_id:BoolUnary_d child:{(${ VSub_Name real_f)})
                                      right: 
                                        (BoolUnary
                                          op_id: BoolUnary_f
                                          child: {(${ VSub_Name real_f)}
                                        )
                                    )
                                )
                              ]
                            )
                          ]
                          action: [
                            (C 
                              {(exclude) (Lit_Other '[') 
                                (BracedVarSub
                                  token: <VSub_Name exclude>
                                  prefix_op: VSub_Pound
                                  bracket_op: (WholeArray op_id:Lit_At)
                                  spids: [1030 1036]
                                ) (Lit_Other ']') (Lit_Other '=') 
                                (BracedVarSub
                                  token: <VSub_Name f>
                                  suffix_op: 
                                    (StringUnary
                                      op_id: VTest_ColonHyphen
                                      arg_word: {(Lit_Slash /)}
                                    )
                                  spids: [1039 1043]
                                )
                              }
                            )
                          ]
                          spids: [16777215 1025]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_ge
                                      left: {(${ VSub_Name i)}
                                      right: {(1)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(ewarn)} {(DQ ('prepcompress:'))} 
                              {
                                (DQ ("ignoring nonexistent path '") 
                                  (BracedVarSub
                                    token: <VSub_Name PORTAGE_DOCOMPRESS_SKIP>
                                    bracket_op: (ArrayIndex expr:(ArithVarRef name:i))
                                    spids: [1074 1079]
                                  ) ("'")
                                )
                              }
                            )
                          ]
                          spids: [1046 1061]
                        )
                      ]
                      spids: [16777215 1084]
                    )
                  ]
                  spids: [953 1087]
                )
            )
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: 
                    (ArithBinary
                      op_id: Arith_Minus
                      left: 
                        (ArithWord
                          w: 
                            {
                              (BracedVarSub
                                token: <VSub_Name include>
                                prefix_op: VSub_Pound
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [1115 1121]
                              )
                            }
                        )
                      right: (ArithWord w:{(Lit_Digits 1)})
                    )
                )
              cond: 
                (ArithBinary
                  op_id: Arith_GreatEqual
                  left: (ArithVarRef name:i)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              update: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:i))
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:f)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name include>
                                bracket_op: (ArrayIndex expr:(ArithVarRef name:i))
                                spids: [1146 1151]
                              )
                            }
                          spids: [1145]
                        )
                      ]
                      spids: [1145]
                    )
                    (ForEach
                      iter_name: g
                      iter_words: [
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name include>
                              bracket_op: (WholeArray op_id:Lit_At)
                              spids: [1161 1166]
                            )
                          )
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DBracket
                                          expr: 
                                            (BoolBinary
                                              op_id: BoolBinary_GlobDEqual
                                              left: {(${ VSub_Name f)}
                                              right: 
                                                {
                                                  (DQ 
                                                    (BracedVarSub
                                                      token: <VSub_Name g>
                                                      suffix_op: 
                                                        (StringUnary
                                                          op_id: VOp1_Percent
                                                          arg_word: {(Lit_Slash /)}
                                                        )
                                                      spids: [1184 1188]
                                                    )
                                                  ) (/) (Lit_Other '*')
                                                }
                                            )
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(unset)} {(include) (Lit_Other '[') (i) (Lit_Other ']')})
                                    (ControlFlow
                                      token: <ControlFlow_Continue continue>
                                      arg_word: {(2)}
                                    )
                                  ]
                                  spids: [16777215 1196]
                                )
                              ]
                              spids: [16777215 1212]
                            )
                          ]
                          spids: [1170 1215]
                        )
                      spids: [1159 1168]
                    )
                    (ForEach
                      iter_name: g
                      iter_words: [
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name exclude>
                              bracket_op: (WholeArray op_id:Lit_At)
                              spids: [1225 1230]
                            )
                          )
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DBracket
                                          expr: 
                                            (LogicalOr
                                              left: 
                                                (BoolBinary
                                                  op_id: BoolBinary_GlobEqual
                                                  left: {(${ VSub_Name f)}
                                                  right: {(DQ (${ VSub_Name g))}
                                                )
                                              right: 
                                                (BoolBinary
                                                  op_id: BoolBinary_GlobDEqual
                                                  left: {(${ VSub_Name f)}
                                                  right: 
                                                    {
                                                      (DQ 
                                                        (BracedVarSub
                                                          token: <VSub_Name g>
                                                          suffix_op: 
                                                            (StringUnary
                                                              op_id: VOp1_Percent
                                                              arg_word: {(Lit_Slash /)}
                                                            )
                                                          spids: [1262 1266]
                                                        )
                                                      ) (/) (Lit_Other '*')
                                                    }
                                                )
                                            )
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(unset)} {(include) (Lit_Other '[') (i) (Lit_Other ']')})
                                    (ControlFlow
                                      token: <ControlFlow_Continue continue>
                                      arg_word: {(2)}
                                    )
                                  ]
                                  spids: [16777215 1274]
                                )
                              ]
                              spids: [16777215 1290]
                            )
                          ]
                          spids: [1234 1293]
                        )
                      spids: [1223 1232]
                    )
                  ]
                  spids: [1142 1296]
                )
            )
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: 
                    (ArithBinary
                      op_id: Arith_Minus
                      left: 
                        (ArithWord
                          w: 
                            {
                              (BracedVarSub
                                token: <VSub_Name exclude>
                                prefix_op: VSub_Pound
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [1319 1325]
                              )
                            }
                        )
                      right: (ArithWord w:{(Lit_Digits 1)})
                    )
                )
              cond: 
                (ArithBinary
                  op_id: Arith_GreatEqual
                  left: (ArithVarRef name:i)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              update: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:i))
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:f)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name exclude>
                                bracket_op: (ArrayIndex expr:(ArithVarRef name:i))
                                spids: [1350 1355]
                              )
                            }
                          spids: [1349]
                        )
                      ]
                      spids: [1349]
                    )
                    (ForEach
                      iter_name: g
                      iter_words: [
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name exclude>
                              bracket_op: (WholeArray op_id:Lit_At)
                              spids: [1365 1370]
                            )
                          )
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DBracket
                                          expr: 
                                            (BoolBinary
                                              op_id: BoolBinary_GlobDEqual
                                              left: {(${ VSub_Name f)}
                                              right: 
                                                {
                                                  (DQ 
                                                    (BracedVarSub
                                                      token: <VSub_Name g>
                                                      suffix_op: 
                                                        (StringUnary
                                                          op_id: VOp1_Percent
                                                          arg_word: {(Lit_Slash /)}
                                                        )
                                                      spids: [1388 1392]
                                                    )
                                                  ) (/) (Lit_Other '*')
                                                }
                                            )
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(unset)} {(exclude) (Lit_Other '[') (i) (Lit_Other ']')})
                                    (ControlFlow
                                      token: <ControlFlow_Continue continue>
                                      arg_word: {(2)}
                                    )
                                  ]
                                  spids: [16777215 1400]
                                )
                              ]
                              spids: [16777215 1416]
                            )
                          ]
                          spids: [1374 1419]
                        )
                      spids: [1363 1372]
                    )
                    (ForEach
                      iter_name: g
                      iter_words: [
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name include>
                              bracket_op: (WholeArray op_id:Lit_At)
                              spids: [1429 1434]
                            )
                          )
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (DoGroup
                          children: [
                            (AndOr
                              ops: [Op_DAmp]
                              children: [
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(${ VSub_Name f)}
                                      right: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name g>
                                              suffix_op: 
                                                (StringUnary
                                                  op_id: VOp1_Percent
                                                  arg_word: {(Lit_Slash /)}
                                                )
                                              spids: [1450 1454]
                                            )
                                          ) (/) (Lit_Other '*')
                                        }
                                    )
                                )
                                (ControlFlow
                                  token: <ControlFlow_Continue continue>
                                  arg_word: {(2)}
                                )
                              ]
                            )
                          ]
                          spids: [1438 1468]
                        )
                      spids: [1427 1436]
                    )
                    (C {(unset)} {(exclude) (Lit_Other '[') (i) (Lit_Other ']')})
                  ]
                  spids: [1346 1479]
                )
            )
            (ForEach
              iter_name: f
              iter_words: [
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name include>
                      bracket_op: (WholeArray op_id:Lit_At)
                      spids: [1494 1499]
                    )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_d
                                      child: {(${ VSub_Name ED) (${ VSub_Name f)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C 
                              {(incl_d) (Lit_Other '[') 
                                (BracedVarSub
                                  token: <VSub_Name incl_d>
                                  prefix_op: VSub_Pound
                                  bracket_op: (WholeArray op_id:Lit_At)
                                  spids: [1527 1533]
                                ) (Lit_Other ']') (Lit_Other '=') (${ VSub_Name f)
                              }
                            )
                          ]
                          spids: [16777215 1522]
                        )
                      ]
                      else_action: [
                        (C 
                          {(incl_f) (Lit_Other '[') 
                            (BracedVarSub
                              token: <VSub_Name incl_f>
                              prefix_op: VSub_Pound
                              bracket_op: (WholeArray op_id:Lit_At)
                              spids: [1546 1552]
                            ) (Lit_Other ']') (Lit_Other '=') (${ VSub_Name f)
                          }
                        )
                      ]
                      spids: [1541 1560]
                    )
                  ]
                  spids: [1503 1563]
                )
              spids: [1492 1501]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_gt
                      left: 
                        {
                          (BracedVarSub
                            token: <VSub_Name incl_d>
                            prefix_op: VSub_Pound
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [1577 1583]
                          )
                        }
                      right: {(0)}
                    )
                )
                (C {(ecompressdir)} {(--limit)} 
                  {
                    (BracedVarSub
                      token: <VSub_Name PORTAGE_DOCOMPRESS_SIZE_LIMIT>
                      suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(0)})
                      spids: [1597 1601]
                    )
                  } {(--queue)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name incl_d>
                        bracket_op: (WholeArray op_id:Lit_At)
                        spids: [1606 1611]
                      )
                    )
                  }
                )
              ]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_gt
                      left: 
                        {
                          (BracedVarSub
                            token: <VSub_Name incl_f>
                            prefix_op: VSub_Pound
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [1617 1623]
                          )
                        }
                      right: {(0)}
                    )
                )
                (C {(ecompress)} {(--queue)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name incl_f>
                        bracket_op: (WholeArray op_id:Lit_At)
                        suffix_op: 
                          (PatSub
                            pat: {}
                            replace: {(${ VSub_Name ED)}
                            do_all: F
                            do_prefix: T
                            do_suffix: F
                          )
                        spids: [1638 1649]
                      )
                    )
                  }
                )
              ]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_gt
                      left: 
                        {
                          (BracedVarSub
                            token: <VSub_Name exclude>
                            prefix_op: VSub_Pound
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [1655 1661]
                          )
                        }
                      right: {(0)}
                    )
                )
                (C {(ecompressdir)} {(--ignore)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name exclude>
                        bracket_op: (WholeArray op_id:Lit_At)
                        spids: [1676 1681]
                      )
                    )
                  }
                )
              ]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [687]
        )
      spids: [683 686]
    )
    (FuncDef
      name: install_qa_check
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair lhs:(LhsName name:d) op:Equal spids:[1701])
                (assign_pair lhs:(LhsName name:f) op:Equal spids:[1703])
                (assign_pair lhs:(LhsName name:i) op:Equal spids:[1705])
                (assign_pair lhs:(LhsName name:qa_var) op:Equal spids:[1707])
                (assign_pair lhs:(LhsName name:x) op:Equal spids:[1709])
                (assign_pair lhs:(LhsName name:paths) op:Equal spids:[1711])
                (assign_pair
                  lhs: (LhsName name:qa_checks)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [1713]
                )
                (assign_pair
                  lhs: (LhsName name:checks_run)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [1717]
                )
              ]
              spids: [1699]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (Pipeline children:[(C {(___eapi_has_prefix_variables)})] negated:T)
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:EPREFIX)
                          op: Equal
                          rhs: {(EmptyPart)}
                          spids: [1734]
                        )
                        (assign_pair
                          lhs: (LhsName name:ED)
                          op: Equal
                          rhs: {(${ VSub_Name D)}
                          spids: [1736]
                        )
                      ]
                      spids: [1732]
                    )
                  ]
                  spids: [16777215 1729]
                )
              ]
              spids: [16777215 1742]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(cd)} {(DQ (${ VSub_Name ED))}) (C {(die)} {(DQ ('cd failed'))})]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:paths)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {(DQ (${ VSub_Name PORTAGE_OVERRIDE_EPREFIX)) 
                            (/usr/local/lib/install-qa-check.d)
                          }
                          {(DQ (${ VSub_Name PORTAGE_OVERRIDE_EPREFIX)) 
                            (/usr/lib/install-qa-check.d)
                          }
                        ]
                      )
                    }
                  spids: [1768]
                )
              ]
              spids: [1768]
            )
            (ForEach
              iter_name: d
              iter_words: [
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name PORTAGE_ECLASS_LOCATIONS>
                      bracket_op: (WholeArray op_id:Lit_At)
                      spids: [1815 1820]
                    )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:paths)
                          op: PlusEqual
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [{(DQ (${ VSub_Name d)) (/metadata/install-qa-check.d)}]
                              )
                            }
                          spids: [1827]
                        )
                      ]
                      spids: [1827]
                    )
                  ]
                  spids: [1824 1842]
                )
              spids: [1813 1822]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:paths)
                  op: PlusEqual
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {(DQ (${ VSub_Name PORTAGE_OVERRIDE_EPREFIX)) 
                            (/usr/lib/portage/install-qa-check.d)
                          }
                          {(DQ (${ VSub_Name PORTAGE_BIN_PATH)) (/install-qa-check.d)}
                        ]
                      )
                    }
                  spids: [1846]
                )
              ]
              spids: [1846]
            )
            (ForEach
              iter_name: d
              iter_words: [
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name paths>
                      bracket_op: (WholeArray op_id:Lit_At)
                      spids: [1889 1894]
                    )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (ForEach
                      iter_name: f
                      iter_words: [{(DQ (${ VSub_Name d)) (/) (Lit_Other '*')}]
                      do_arg_iter: F
                      body: 
                        (DoGroup
                          children: [
                            (AndOr
                              ops: [Op_DAmp]
                              children: [
                                (DBracket
                                  expr: (BoolUnary op_id:BoolUnary_f child:{(${ VSub_Name f)})
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:qa_checks)
                                      op: PlusEqual
                                      rhs: 
                                        {
                                          (ArrayLiteralPart
                                            words: [
                                              {
                                                (DQ 
                                                  (BracedVarSub
                                                    token: <VSub_Name f>
                                                    suffix_op: 
                                                      (StringUnary
                                                        op_id: VOp1_DPound
                                                        arg_word: {('*') (Lit_Slash /)}
                                                      )
                                                    spids: [1935 1940]
                                                  )
                                                )
                                              }
                                            ]
                                          )
                                        }
                                      spids: [1931]
                                    )
                                  ]
                                  spids: [1931]
                                )
                              ]
                            )
                          ]
                          spids: [1916 1946]
                        )
                      spids: [1906 1914]
                    )
                  ]
                  spids: [1898 1949]
                )
              spids: [1887 1896]
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [
                (Sentence
                  child: (C {(read)} {(-r)} {(-d)} {(SQ )} {(f)})
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (ForEach
                      iter_name: d
                      iter_words: [
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name paths>
                              bracket_op: (WholeArray op_id:Lit_At)
                              spids: [1989 1994]
                            )
                          )
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (DoGroup
                          children: [
                            (AndOr
                              ops: [Op_DAmp]
                              children: [
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_f
                                      child: {(${ VSub_Name d) (/) (${ VSub_Name f)}
                                    )
                                )
                                (ControlFlow
                                  token: <ControlFlow_Break break>
                                )
                              ]
                            )
                          ]
                          spids: [1998 2020]
                        )
                      spids: [1987 1996]
                    )
                    (Subshell
                      child: 
                        (CommandList
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:_IN_INSTALL_QA_CHECK)
                                  op: Equal
                                  rhs: {(1)}
                                  spids: [2043]
                                )
                              ]
                              spids: [2043]
                            )
                            (AndOr
                              ops: [Op_DPipe]
                              children: [
                                (C {(source)} {(DQ (${ VSub_Name d) (/) (${ VSub_Name f))})
                                (C {(eerror)} 
                                  {
                                    (DQ ('Post-install QA check ') (${ VSub_Name f) (' failed to run'))
                                  }
                                )
                              ]
                            )
                          ]
                        )
                      spids: [2032 2072]
                    )
                  ]
                  spids: [1975 2075]
                )
              redirects: [
                (Redir
                  op: <Redir_Less '<'>
                  fd: 16777215
                  arg_word: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(printf)} {(DQ ('%s') (Lit_Other '\\') (0))} 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          token: <VSub_Name qa_checks>
                                          bracket_op: (WholeArray op_id:Lit_At)
                                          spids: [2089 2094]
                                        )
                                      )
                                    }
                                  )
                                  (SimpleCommand
                                    words: [{(sort)} {(-u)} {(-z)}]
                                    more_env: [(env_pair name:LC_ALL val:{(C)} spids:[2099])]
                                  )
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_ProcSubIn '<('>
                        spids: [2079 2107]
                      )
                    }
                )
              ]
            )
            (C {(export)} {(STRIP_MASK)})
            (C {(prepall)})
            (AndOr
              ops: [Op_DAmp]
              children: [(C {(___eapi_has_docompress)}) (C {(prepcompress)})]
            )
            (C {(ecompressdir)} {(--dequeue)})
            (C {(ecompress)} {(--dequeue)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [{(type)} {(-P)} {(scanelf)}]
                          redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(rm)} {(-f)} 
                      (BracedWordTree
                        parts: [
                          (DQ ($ VSub_Name '$PORTAGE_BUILDDIR'))
                          (/build-info/NEEDED)
                          (BracedAltPart words:[{} {(.ELF.2)}])
                        ]
                      )
                    )
                    (Pipeline
                      children: [
                        (C {(scanelf)} {(-qyRF)} {(SQ <'%a;%p;%S;%r;%n'>)} {(DQ (${ VSub_Name D))})
                        (BraceGroup
                          children: [
                            (WhileUntil
                              keyword: <KW_While while>
                              cond: [
                                (Sentence
                                  child: 
                                    (SimpleCommand
                                      words: [{(read)} {(-r)} {(l)}]
                                      more_env: [(env_pair name:IFS val:{(EmptyPart)} spids:[2208])]
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              body: 
                                (DoGroup
                                  children: [
                                    (Sentence
                                      child: 
                                        (Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (LhsName name:arch)
                                              op: Equal
                                              rhs: 
                                                {
                                                  (BracedVarSub
                                                    token: <VSub_Name l>
                                                    suffix_op: 
                                                      (StringUnary
                                                        op_id: VOp1_DPercent
                                                        arg_word: {(';*')}
                                                      )
                                                    spids: [2221 2225]
                                                  )
                                                }
                                              spids: [2220]
                                            )
                                          ]
                                          spids: [2220]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:l)
                                          op: Equal
                                          rhs: 
                                            {
                                              (BracedVarSub
                                                token: <VSub_Name l>
                                                suffix_op: 
                                                  (StringUnary
                                                    op_id: VOp1_Pound
                                                    arg_word: {('*;')}
                                                  )
                                                spids: [2229 2233]
                                              )
                                            }
                                          spids: [2228]
                                        )
                                      ]
                                      spids: [2228]
                                    )
                                    (Sentence
                                      child: 
                                        (Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (LhsName name:obj)
                                              op: Equal
                                              rhs: 
                                                {
                                                  (DQ (/) 
                                                    (BracedVarSub
                                                      token: <VSub_Name l>
                                                      suffix_op: 
                                                        (StringUnary
                                                          op_id: VOp1_DPercent
                                                          arg_word: {(';*')}
                                                        )
                                                      spids: [2239 2243]
                                                    )
                                                  )
                                                }
                                              spids: [2236]
                                            )
                                          ]
                                          spids: [2236]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:l)
                                          op: Equal
                                          rhs: 
                                            {
                                              (BracedVarSub
                                                token: <VSub_Name l>
                                                suffix_op: 
                                                  (StringUnary
                                                    op_id: VOp1_Pound
                                                    arg_word: {('*;')}
                                                  )
                                                spids: [2248 2252]
                                              )
                                            }
                                          spids: [2247]
                                        )
                                      ]
                                      spids: [2247]
                                    )
                                    (Sentence
                                      child: 
                                        (Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (LhsName name:soname)
                                              op: Equal
                                              rhs: 
                                                {
                                                  (BracedVarSub
                                                    token: <VSub_Name l>
                                                    suffix_op: 
                                                      (StringUnary
                                                        op_id: VOp1_DPercent
                                                        arg_word: {(';*')}
                                                      )
                                                    spids: [2256 2260]
                                                  )
                                                }
                                              spids: [2255]
                                            )
                                          ]
                                          spids: [2255]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:l)
                                          op: Equal
                                          rhs: 
                                            {
                                              (BracedVarSub
                                                token: <VSub_Name l>
                                                suffix_op: 
                                                  (StringUnary
                                                    op_id: VOp1_Pound
                                                    arg_word: {('*;')}
                                                  )
                                                spids: [2264 2268]
                                              )
                                            }
                                          spids: [2263]
                                        )
                                      ]
                                      spids: [2263]
                                    )
                                    (Sentence
                                      child: 
                                        (Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (LhsName name:rpath)
                                              op: Equal
                                              rhs: 
                                                {
                                                  (BracedVarSub
                                                    token: <VSub_Name l>
                                                    suffix_op: 
                                                      (StringUnary
                                                        op_id: VOp1_DPercent
                                                        arg_word: {(';*')}
                                                      )
                                                    spids: [2272 2276]
                                                  )
                                                }
                                              spids: [2271]
                                            )
                                          ]
                                          spids: [2271]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                    (Sentence
                                      child: 
                                        (Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (LhsName name:l)
                                              op: Equal
                                              rhs: 
                                                {
                                                  (BracedVarSub
                                                    token: <VSub_Name l>
                                                    suffix_op: 
                                                      (StringUnary
                                                        op_id: VOp1_Pound
                                                        arg_word: {('*;')}
                                                      )
                                                    spids: [2280 2284]
                                                  )
                                                }
                                              spids: [2279]
                                            )
                                          ]
                                          spids: [2279]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                    (AndOr
                                      ops: [Op_DAmp]
                                      children: [
                                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name rpath))} 
                                          {(Lit_Other '=')} {(DQ ('  -  '))} {(Lit_Other ']')}
                                        )
                                        (Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (LhsName name:rpath)
                                              op: Equal
                                              rhs: {(DQ )}
                                              spids: [2305]
                                            )
                                          ]
                                          spids: [2305]
                                        )
                                      ]
                                    )
                                    (Sentence
                                      child: 
                                        (Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (LhsName name:needed)
                                              op: Equal
                                              rhs: 
                                                {
                                                  (BracedVarSub
                                                    token: <VSub_Name l>
                                                    suffix_op: 
                                                      (StringUnary
                                                        op_id: VOp1_DPercent
                                                        arg_word: {(';*')}
                                                      )
                                                    spids: [2311 2315]
                                                  )
                                                }
                                              spids: [2310]
                                            )
                                          ]
                                          spids: [2310]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:l)
                                          op: Equal
                                          rhs: 
                                            {
                                              (BracedVarSub
                                                token: <VSub_Name l>
                                                suffix_op: 
                                                  (StringUnary
                                                    op_id: VOp1_Pound
                                                    arg_word: {('*;')}
                                                  )
                                                spids: [2319 2323]
                                              )
                                            }
                                          spids: [2318]
                                        )
                                      ]
                                      spids: [2318]
                                    )
                                    (SimpleCommand
                                      words: [
                                        {(echo)}
                                        {(DQ (${ VSub_Name obj) (' ') (${ VSub_Name needed))}
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Redir_DGreat '>>'>
                                          fd: 16777215
                                          arg_word: 
                                            {(DQ (${ VSub_Name PORTAGE_BUILDDIR)) 
                                              (/build-info/NEEDED)
                                            }
                                        )
                                      ]
                                    )
                                    (SimpleCommand
                                      words: [
                                        {(echo)}
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name arch>
                                              suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 3)}))
                                              spids: [2351 2355]
                                            ) (';') (${ VSub_Name obj) (';') (${ VSub_Name soname) (';') (${ VSub_Name rpath) (';') (${ VSub_Name needed)
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Redir_DGreat '>>'>
                                          fd: 16777215
                                          arg_word: 
                                            {(DQ (${ VSub_Name PORTAGE_BUILDDIR)) 
                                              (/build-info/NEEDED.ELF.2)
                                            }
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [2217 2384]
                                )
                            )
                          ]
                          spids: [2204]
                        )
                      ]
                      negated: F
                    )
                    (AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name QA_SONAME_NO_SYMLINK))} 
                          {(Lit_Other ']')}
                        )
                        (SimpleCommand
                          words: [{(echo)} {(DQ (${ VSub_Name QA_SONAME_NO_SYMLINK))}]
                          redirects: [
                            (Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: 
                                {(DQ (${ VSub_Name PORTAGE_BUILDDIR)) 
                                  (/build-info/QA_SONAME_NO_SYMLINK)
                                }
                            )
                          ]
                        )
                      ]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (AndOr
                                  ops: [Op_DAmp]
                                  children: [
                                    (C {(has)} {(binchecks)} {(${ VSub_Name RESTRICT)})
                                    (C {(Lit_Other '[')} {(-s)} 
                                      {
                                        (DQ (${ VSub_Name PORTAGE_BUILDDIR) (/build-info/NEEDED.ELF.2))
                                      } {(Lit_Other ']')}
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(eqawarn)} 
                              {
                                (DQ 
                                  (
'QA Notice: RESTRICT=binchecks prevented checks on these ELF files:'
                                  )
                                )
                              }
                            )
                            (C {(eqawarn)} 
                              {
                                (DQ 
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (WhileUntil
                                            keyword: <KW_While while>
                                            cond: [
                                              (Sentence
                                                child: (C {(read)} {(-r)} {(x)})
                                                terminator: <Op_Semi ';'>
                                              )
                                            ]
                                            body: 
                                              (DoGroup
                                                children: [
                                                  (Sentence
                                                    child: 
                                                      (Assignment
                                                        keyword: Assign_None
                                                        pairs: [
                                                          (assign_pair
                                                            lhs: (LhsName name:x)
                                                            op: Equal
                                                            rhs: 
                                                              {
                                                                (BracedVarSub
                                                                  token: <VSub_Name x>
                                                                  suffix_op: 
                                                                    (StringUnary
                                                                      op_id: VOp1_Pound
                                                                      arg_word: {('*;')}
                                                                    )
                                                                  spids: [2482 2486]
                                                                )
                                                              }
                                                            spids: [2481]
                                                          )
                                                        ]
                                                        spids: [2481]
                                                      )
                                                    terminator: <Op_Semi ';'>
                                                  )
                                                  (Sentence
                                                    child: 
                                                      (Assignment
                                                        keyword: Assign_None
                                                        pairs: [
                                                          (assign_pair
                                                            lhs: (LhsName name:x)
                                                            op: Equal
                                                            rhs: 
                                                              {
                                                                (BracedVarSub
                                                                  token: <VSub_Name x>
                                                                  suffix_op: 
                                                                    (StringUnary
                                                                      op_id: VOp1_DPercent
                                                                      arg_word: {(';*')}
                                                                    )
                                                                  spids: [2491 2495]
                                                                )
                                                              }
                                                            spids: [2490]
                                                          )
                                                        ]
                                                        spids: [2490]
                                                      )
                                                    terminator: <Op_Semi ';'>
                                                  )
                                                  (Sentence
                                                    child: 
                                                      (C {(echo)} 
                                                        {
                                                          (DQ 
                                                            (BracedVarSub
                                                              token: <VSub_Name x>
                                                              suffix_op: 
                                                                (StringUnary
                                                                  op_id: VOp1_Pound
                                                                  arg_word: {(${ VSub_Name EPREFIX)}
                                                                )
                                                              spids: [2502 2508]
                                                            )
                                                          )
                                                        }
                                                      )
                                                    terminator: <Op_Semi ';'>
                                                  )
                                                ]
                                                spids: [2479 2513]
                                              )
                                            redirects: [
                                              (Redir
                                                op: <Redir_Less '<'>
                                                fd: 16777215
                                                arg_word: 
                                                  {(DQ (${ VSub_Name PORTAGE_BUILDDIR)) 
                                                    (/build-info/NEEDED.ELF.2)
                                                  }
                                              )
                                            ]
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [2469 2523]
                                  )
                                )
                              }
                            )
                          ]
                          spids: [16777215 2456]
                        )
                      ]
                      spids: [16777215 2527]
                    )
                  ]
                  spids: [16777215 2167]
                )
              ]
              spids: [16777215 2530]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(rm)} {(-f)} 
                  (BracedWordTree
                    parts: [
                      (DQ (${ VSub_Name ED))
                      (/usr/share/info/dir)
                      (BracedAltPart words:[{} {(.gz)} {(.bz2)}])
                    ]
                  )
                )
                (C {(die)} {(DQ ('rm failed!'))})
              ]
            )
          ]
          spids: [1696]
        )
      spids: [1692 1695]
    )
    (FuncDef
      name: postinst_qa_check
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair lhs:(LhsName name:d) op:Equal spids:[2575])
                (assign_pair lhs:(LhsName name:f) op:Equal spids:[2577])
                (assign_pair lhs:(LhsName name:paths) op:Equal spids:[2579])
                (assign_pair
                  lhs: (LhsName name:qa_checks)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [2581]
                )
              ]
              spids: [2573]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (Pipeline children:[(C {(___eapi_has_prefix_variables)})] negated:T)
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:EPREFIX)
                          op: Equal
                          rhs: {(EmptyPart)}
                          spids: [2598]
                        )
                        (assign_pair
                          lhs: (LhsName name:EROOT)
                          op: Equal
                          rhs: {(${ VSub_Name ROOT)}
                          spids: [2600]
                        )
                      ]
                      spids: [2596]
                    )
                  ]
                  spids: [16777215 2593]
                )
              ]
              spids: [16777215 2606]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(cd)} {(DQ (${ VSub_Name EROOT))}) (C {(die)} {(DQ ('cd failed'))})]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:paths)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {(DQ (${ VSub_Name PORTAGE_OVERRIDE_EPREFIX)) 
                            (/usr/local/lib/postinst-qa-check.d)
                          }
                          {(DQ (${ VSub_Name PORTAGE_OVERRIDE_EPREFIX)) 
                            (/usr/lib/postinst-qa-check.d)
                          }
                        ]
                      )
                    }
                  spids: [2632]
                )
              ]
              spids: [2632]
            )
            (ForEach
              iter_name: d
              iter_words: [
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name PORTAGE_ECLASS_LOCATIONS>
                      bracket_op: (WholeArray op_id:Lit_At)
                      spids: [2679 2684]
                    )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:paths)
                          op: PlusEqual
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [{(DQ (${ VSub_Name d)) (/metadata/postinst-qa-check.d)}]
                              )
                            }
                          spids: [2691]
                        )
                      ]
                      spids: [2691]
                    )
                  ]
                  spids: [2688 2706]
                )
              spids: [2677 2686]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:paths)
                  op: PlusEqual
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {(DQ (${ VSub_Name PORTAGE_OVERRIDE_EPREFIX)) 
                            (/usr/lib/portage/postinst-qa-check.d)
                          }
                          {(DQ (${ VSub_Name PORTAGE_BIN_PATH)) (/postinst-qa-check.d)}
                        ]
                      )
                    }
                  spids: [2710]
                )
              ]
              spids: [2710]
            )
            (ForEach
              iter_name: d
              iter_words: [
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name paths>
                      bracket_op: (WholeArray op_id:Lit_At)
                      spids: [2753 2758]
                    )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (ForEach
                      iter_name: f
                      iter_words: [{(DQ (${ VSub_Name d)) (/) (Lit_Other '*')}]
                      do_arg_iter: F
                      body: 
                        (DoGroup
                          children: [
                            (AndOr
                              ops: [Op_DAmp]
                              children: [
                                (DBracket
                                  expr: (BoolUnary op_id:BoolUnary_f child:{(${ VSub_Name f)})
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:qa_checks)
                                      op: PlusEqual
                                      rhs: 
                                        {
                                          (ArrayLiteralPart
                                            words: [
                                              {
                                                (DQ 
                                                  (BracedVarSub
                                                    token: <VSub_Name f>
                                                    suffix_op: 
                                                      (StringUnary
                                                        op_id: VOp1_DPound
                                                        arg_word: {('*') (Lit_Slash /)}
                                                      )
                                                    spids: [2799 2804]
                                                  )
                                                )
                                              }
                                            ]
                                          )
                                        }
                                      spids: [2795]
                                    )
                                  ]
                                  spids: [2795]
                                )
                              ]
                            )
                          ]
                          spids: [2780 2810]
                        )
                      spids: [2770 2778]
                    )
                  ]
                  spids: [2762 2813]
                )
              spids: [2751 2760]
            )
            (WhileUntil
              keyword: <KW_While while>
              cond: [
                (Sentence
                  child: (C {(read)} {(-r)} {(-d)} {(SQ )} {(f)})
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (ForEach
                      iter_name: d
                      iter_words: [
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name paths>
                              bracket_op: (WholeArray op_id:Lit_At)
                              spids: [2853 2858]
                            )
                          )
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (DoGroup
                          children: [
                            (AndOr
                              ops: [Op_DAmp]
                              children: [
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_f
                                      child: {(${ VSub_Name d) (/) (${ VSub_Name f)}
                                    )
                                )
                                (ControlFlow
                                  token: <ControlFlow_Break break>
                                )
                              ]
                            )
                          ]
                          spids: [2862 2884]
                        )
                      spids: [2851 2860]
                    )
                    (Subshell
                      child: 
                        (CommandList
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:_IN_INSTALL_QA_CHECK)
                                  op: Equal
                                  rhs: {(1)}
                                  spids: [2907]
                                )
                              ]
                              spids: [2907]
                            )
                            (AndOr
                              ops: [Op_DPipe]
                              children: [
                                (C {(source)} {(DQ (${ VSub_Name d) (/) (${ VSub_Name f))})
                                (C {(eerror)} 
                                  {
                                    (DQ ('Post-postinst QA check ') (${ VSub_Name f) (' failed to run'))
                                  }
                                )
                              ]
                            )
                          ]
                        )
                      spids: [2896 2936]
                    )
                  ]
                  spids: [2839 2939]
                )
              redirects: [
                (Redir
                  op: <Redir_Less '<'>
                  fd: 16777215
                  arg_word: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(printf)} {(DQ ('%s') (Lit_Other '\\') (0))} 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          token: <VSub_Name qa_checks>
                                          bracket_op: (WholeArray op_id:Lit_At)
                                          spids: [2953 2958]
                                        )
                                      )
                                    }
                                  )
                                  (SimpleCommand
                                    words: [{(sort)} {(-u)} {(-z)}]
                                    more_env: [(env_pair name:LC_ALL val:{(C)} spids:[2963])]
                                  )
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_ProcSubIn '<('>
                        spids: [2943 2971]
                      )
                    }
                )
              ]
            )
          ]
          spids: [2570]
        )
      spids: [2566 2569]
    )
    (FuncDef
      name: install_mask
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:root)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [2985]
                )
              ]
              spids: [2983]
            )
            (C {(shift)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:install_mask)
                  op: Equal
                  rhs: {(DQ ($ VSub_Star '$*'))}
                  spids: [2996]
                )
              ]
              spids: [2994]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:shopts)
                  op: Equal
                  rhs: {($ VSub_Hyphen '$-')}
                  spids: [3017]
                )
              ]
              spids: [3015]
            )
            (C {(set)} {(-o)} {(noglob)})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:no_inst) op:Equal spids:[3030])]
              spids: [3028]
            )
            (ForEach
              iter_name: no_inst
              iter_words: [{(${ VSub_Name install_mask)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(set)} {(Lit_Other '+') (o)} {(noglob)})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (LogicalOr
                                      left: 
                                        (BoolUnary
                                          op_id: BoolUnary_e
                                          child: {(DQ (${ VSub_Name root)) (/) (${ VSub_Name no_inst)}
                                        )
                                      right: 
                                        (LogicalOr
                                          left: 
                                            (BoolUnary
                                              op_id: BoolUnary_L
                                              child: 
                                                {(DQ (${ VSub_Name root)) (/) (${ VSub_Name no_inst)}
                                            )
                                          right: 
                                            (BoolBinary
                                              op_id: BoolBinary_GlobNEqual
                                              left: 
                                                {(DQ (${ VSub_Name root)) (/) (${ VSub_Name no_inst)}
                                              right: 
                                                {
                                                  (CommandSubPart
                                                    command_list: 
                                                      (CommandList
                                                        children: [
                                                          (C {(echo)} 
                                                            {(DQ (${ VSub_Name root)) (/) 
                                                              (${ VSub_Name no_inst)
                                                            }
                                                          )
                                                        ]
                                                      )
                                                    left_token: <Left_CommandSub '$('>
                                                    spids: [3121 3133]
                                                  )
                                                }
                                            )
                                        )
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (AndOr
                              ops: [Op_DPipe]
                              children: [
                                (C {(__quiet_mode)})
                                (C {(einfo)} {(DQ ('Removing ') (${ VSub_Name no_inst))})
                              ]
                            )
                            (SimpleCommand
                              words: [
                                {(rm)}
                                {(-Rf)}
                                {(DQ (${ VSub_Name root)) (/) (${ VSub_Name no_inst)}
                              ]
                              redirects: [
                                (Redir
                                  op: <Redir_GreatAnd '>&'>
                                  fd: 16777215
                                  arg_word: {(/dev/null)}
                                )
                              ]
                            )
                          ]
                          spids: [16777215 3139]
                        )
                      ]
                      spids: [16777215 3174]
                    )
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [
                            {(find)}
                            {(DQ (${ VSub_Name root))}
                            {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)}
                            {(-path)}
                            {(DQ (${ VSub_Name no_inst))}
                            {(-or)}
                            {(-name)}
                            {(DQ (${ VSub_Name no_inst))}
                            {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)}
                            {(-print0)}
                          ]
                          redirects: [(Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})]
                        )
                        (SimpleCommand
                          words: [{(sort)} {(-z)}]
                          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[3240])]
                        )
                        (WhileUntil
                          keyword: <KW_While while>
                          cond: [
                            (Sentence
                              child: (C {(read)} {(-r)} {(-d)} {(SQ )})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          body: 
                            (DoGroup
                              children: [
                                (AndOr
                                  ops: [Op_DPipe]
                                  children: [
                                    (C {(__quiet_mode)})
                                    (C {(einfo)} 
                                      {
                                        (DQ ('Removing /') 
                                          (BracedVarSub
                                            token: <VSub_Name REPLY>
                                            suffix_op: 
                                              (StringUnary
                                                op_id: VOp1_Pound
                                                arg_word: {(${ VSub_Name root)}
                                              )
                                            spids: [3274 3280]
                                          )
                                        )
                                      }
                                    )
                                  ]
                                )
                                (SimpleCommand
                                  words: [{(rm)} {(-Rf)} {(DQ (${ VSub_Name REPLY))}]
                                  redirects: [
                                    (Redir
                                      op: <Redir_GreatAnd '>&'>
                                      fd: 16777215
                                      arg_word: {(/dev/null)}
                                    )
                                  ]
                                )
                              ]
                              spids: [3263 3298]
                            )
                        )
                      ]
                      negated: F
                    )
                  ]
                  spids: [3044 3302]
                )
              spids: [3038 3042]
            )
            (C {(set)} {(Lit_Other '+') (o)} {(noglob)})
            (C {(set)} {(-) (${ VSub_Name shopts)})
          ]
          spids: [2980]
        )
      spids: [2976 2979]
    )
    (FuncDef
      name: preinst_mask
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name D))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(eerror)} {(DQ (${ VSub_Name FUNCNAME) (': D is unset'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 3349]
                )
              ]
              spids: [16777215 3367]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (Pipeline children:[(C {(___eapi_has_prefix_variables)})] negated:T)
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ED)
                          op: Equal
                          rhs: {(${ VSub_Name D)}
                          spids: [3383]
                        )
                      ]
                      spids: [3381]
                    )
                  ]
                  spids: [16777215 3378]
                )
              ]
              spids: [16777215 3389]
            )
            (C {(cd)} {(DQ (${ VSub_Name T))})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:f) op:Equal spids:[3417])]
              spids: [3415]
            )
            (ForEach
              iter_name: f
              iter_words: [{(man)} {(info)} {(doc)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: (C {(has)} {(no) (${ VSub_Name f)} {($ VSub_Name '$FEATURES')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:INSTALL_MASK)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ (${ VSub_Name INSTALL_MASK) (' /usr/share/') (${ VSub_Name f))
                                    }
                                  spids: [3451]
                                )
                              ]
                              spids: [3451]
                            )
                          ]
                          spids: [16777215 3448]
                        )
                      ]
                      spids: [16777215 3463]
                    )
                  ]
                  spids: [3433 3466]
                )
              spids: [3425 3431]
            )
            (C {(install_mask)} {(DQ (${ VSub_Name ED))} {(DQ (${ VSub_Name INSTALL_MASK))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DPipe Op_DPipe]
                          children: [
                            (C {(has)} {(nodoc)} {($ VSub_Name '$FEATURES')})
                            (C {(has)} {(noman)} {($ VSub_Name '$FEATURES')})
                            (C {(has)} {(noinfo)} {($ VSub_Name '$FEATURES')})
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(rmdir)} {(DQ (${ VSub_Name ED) (usr/share))}]
                      redirects: [(Redir op:<Redir_AndGreat '&>'> fd:16777215 arg_word:{(/dev/null)})]
                    )
                  ]
                  spids: [16777215 3515]
                )
              ]
              spids: [16777215 3532]
            )
          ]
          spids: [3331]
        )
      spids: [3327 3330]
    )
    (FuncDef
      name: preinst_sfperms
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name D))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(eerror)} {(DQ (${ VSub_Name FUNCNAME) (': D is unset'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 3559]
                )
              ]
              spids: [16777215 3577]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (Pipeline children:[(C {(___eapi_has_prefix_variables)})] negated:T)
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ED)
                          op: Equal
                          rhs: {(${ VSub_Name D)}
                          spids: [3593]
                        )
                      ]
                      spids: [3591]
                    )
                  ]
                  spids: [16777215 3588]
                )
              ]
              spids: [16777215 3599]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(has)} {(sfperms)} {($ VSub_Name '$FEATURES')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [(assign_pair lhs:(LhsName name:i) op:Equal spids:[3621])]
                      spids: [3619]
                    )
                    (Pipeline
                      children: [
                        (C {(find)} {(DQ (${ VSub_Name ED))} {(-type)} {(f)} {(-perm)} {(-4000)} {(-print0)})
                        (WhileUntil
                          keyword: <KW_While while>
                          cond: [
                            (Sentence
                              child: 
                                (C {(read)} {(-r)} {(-d)} 
                                  {
                                    (SingleQuotedPart
                                      left: <Left_DollarSingleQuote "$'">
                                      tokens: [<Char_OneChar '\\0'>]
                                      spids: [3654 3656]
                                    )
                                  } {(i)}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          body: 
                            (DoGroup
                              children: [
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {(-n)} 
                                              {
                                                (DQ 
                                                  (CommandSubPart
                                                    command_list: 
                                                      (CommandList
                                                        children: [
                                                          (C {(find)} {(DQ ($ VSub_Name '$i'))} 
                                                            {(-perm)} {(-2000)}
                                                          )
                                                        ]
                                                      )
                                                    left_token: <Left_CommandSub '$('>
                                                    spids: [3672 3682]
                                                  )
                                                )
                                              } {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [
                                        (C {(ebegin)} 
                                          {
                                            (DQ ('>>> SetUID and SetGID: [chmod o-r] /') 
                                              (BracedVarSub
                                                token: <VSub_Name i>
                                                suffix_op: 
                                                  (StringUnary
                                                    op_id: VOp1_Pound
                                                    arg_word: {(${ VSub_Name ED)}
                                                  )
                                                spids: [3696 3702]
                                              )
                                            )
                                          }
                                        )
                                        (C {(chmod)} {(o-r)} {(DQ ($ VSub_Name '$i'))})
                                        (C {(eend)} {($ VSub_QMark '$?')})
                                      ]
                                      spids: [16777215 3689]
                                    )
                                  ]
                                  else_action: [
                                    (C {(ebegin)} 
                                      {
                                        (DQ ('>>> SetUID: [chmod go-r] /') 
                                          (BracedVarSub
                                            token: <VSub_Name i>
                                            suffix_op: 
                                              (StringUnary
                                                op_id: VOp1_Pound
                                                arg_word: {(${ VSub_Name ED)}
                                              )
                                            spids: [3727 3733]
                                          )
                                        )
                                      }
                                    )
                                    (C {(chmod)} {(go-r)} {(DQ ($ VSub_Name '$i'))})
                                    (C {(eend)} {($ VSub_QMark '$?')})
                                  ]
                                  spids: [3720 3751]
                                )
                              ]
                              spids: [3662 3754]
                            )
                        )
                      ]
                      negated: F
                    )
                    (Pipeline
                      children: [
                        (C {(find)} {(DQ (${ VSub_Name ED))} {(-type)} {(f)} {(-perm)} {(-2000)} {(-print0)})
                        (WhileUntil
                          keyword: <KW_While while>
                          cond: [
                            (Sentence
                              child: 
                                (C {(read)} {(-r)} {(-d)} 
                                  {
                                    (SingleQuotedPart
                                      left: <Left_DollarSingleQuote "$'">
                                      tokens: [<Char_OneChar '\\0'>]
                                      spids: [3787 3789]
                                    )
                                  } {(i)}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          body: 
                            (DoGroup
                              children: [
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} {(-n)} 
                                              {
                                                (DQ 
                                                  (CommandSubPart
                                                    command_list: 
                                                      (CommandList
                                                        children: [
                                                          (C {(find)} {(DQ ($ VSub_Name '$i'))} 
                                                            {(-perm)} {(-4000)}
                                                          )
                                                        ]
                                                      )
                                                    left_token: <Left_CommandSub '$('>
                                                    spids: [3805 3815]
                                                  )
                                                )
                                              } {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [(C {(true)})]
                                      spids: [16777215 3822]
                                    )
                                  ]
                                  else_action: [
                                    (C {(ebegin)} 
                                      {
                                        (DQ ('>>> SetGID: [chmod o-r] /') 
                                          (BracedVarSub
                                            token: <VSub_Name i>
                                            suffix_op: 
                                              (StringUnary
                                                op_id: VOp1_Pound
                                                arg_word: {(${ VSub_Name ED)}
                                              )
                                            spids: [3843 3849]
                                          )
                                        )
                                      }
                                    )
                                    (C {(chmod)} {(o-r)} {(DQ ($ VSub_Name '$i'))})
                                    (C {(eend)} {($ VSub_QMark '$?')})
                                  ]
                                  spids: [3836 3867]
                                )
                              ]
                              spids: [3795 3870]
                            )
                        )
                      ]
                      negated: F
                    )
                  ]
                  spids: [16777215 3616]
                )
              ]
              spids: [16777215 3873]
            )
          ]
          spids: [3541]
        )
      spids: [3537 3540]
    )
    (FuncDef
      name: preinst_suid_scan
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name D))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(eerror)} {(DQ (${ VSub_Name FUNCNAME) (': D is unset'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 3900]
                )
              ]
              spids: [16777215 3918]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (Pipeline children:[(C {(___eapi_has_prefix_variables)})] negated:T)
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ED)
                          op: Equal
                          rhs: {(${ VSub_Name D)}
                          spids: [3934]
                        )
                      ]
                      spids: [3932]
                    )
                  ]
                  spids: [16777215 3929]
                )
              ]
              spids: [16777215 3940]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(has)} {(suidctl)} {($ VSub_Name '$FEATURES')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:i)
                          op: Equal
                          spids: [3962]
                        )
                        (assign_pair
                          lhs: (LhsName name:sfconf)
                          op: Equal
                          spids: [3964]
                        )
                        (assign_pair
                          lhs: (LhsName name:x)
                          op: Equal
                          spids: [3966]
                        )
                      ]
                      spids: [3960]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:sfconf)
                          op: Equal
                          rhs: {(${ VSub_Name PORTAGE_CONFIGROOT) (etc/portage/suidctl.conf)}
                          spids: [3969]
                        )
                      ]
                      spids: [3969]
                    )
                    (C {(addwrite)} {(DQ (${ VSub_Name sfconf))})
                    (C {(__vecho)} {(DQ ('>>> Performing suid scan in ') (${ VSub_Name ED))})
                    (ForEach
                      iter_name: i
                      iter_words: [
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(find)} {(DQ (${ VSub_Name ED))} {(-type)} {(f)} 
                                    {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} {(-perm)} {(-4000)} {(-o)} {(-perm)} {(-2000)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [4013 4040]
                          )
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-s)} {(DQ (${ VSub_Name sfconf))} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:install_path)
                                          op: Equal
                                          rhs: 
                                            {(/) 
                                              (BracedVarSub
                                                token: <VSub_Name i>
                                                suffix_op: 
                                                  (StringUnary
                                                    op_id: VOp1_Pound
                                                    arg_word: {(${ VSub_Name ED)}
                                                  )
                                                spids: [4066 4072]
                                              )
                                            }
                                          spids: [4064]
                                        )
                                      ]
                                      spids: [4064]
                                    )
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (Sentence
                                              child: 
                                                (C {(grep)} {(-q)} 
                                                  {
                                                    (DQ ('^') (${ VSub_Name install_path) 
                                                      (EscapedLiteralPart
                                                        token: <Lit_EscapedChar '\\$'>
                                                      )
                                                    )
                                                  } {(DQ (${ VSub_Name sfconf))}
                                                )
                                              terminator: <Op_Semi ';'>
                                            )
                                          ]
                                          action: [
                                            (C {(__vecho)} 
                                              {
                                                (DQ ('- ') (${ VSub_Name install_path) 
                                                  (' is an approved suid file')
                                                )
                                              }
                                            )
                                          ]
                                          spids: [16777215 4097]
                                        )
                                      ]
                                      else_action: [
                                        (C {(__vecho)} 
                                          {
                                            (DQ ('>>> Removing sbit on non registered ') 
                                              (${ VSub_Name install_path)
                                            )
                                          }
                                        )
                                        (SimpleCommand
                                          words: [{(sleep)} {(1.5)}]
                                          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[4124])]
                                        )
                                        (Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (LhsName name:ls_ret)
                                              op: Equal
                                              rhs: 
                                                {
                                                  (CommandSubPart
                                                    command_list: 
                                                      (CommandList
                                                        children: [
                                                          (C {(ls)} {(-ldh)} {(DQ (${ VSub_Name i))})
                                                        ]
                                                      )
                                                    left_token: <Left_CommandSub '$('>
                                                    spids: [4133 4143]
                                                  )
                                                }
                                              spids: [4132]
                                            )
                                          ]
                                          spids: [4132]
                                        )
                                        (C {(chmod)} {(ugo-s)} {(DQ (${ VSub_Name i))})
                                        (AndOr
                                          ops: [Op_DPipe]
                                          children: [
                                            (SimpleCommand
                                              words: [
                                                {(grep)}
                                                {
                                                  (DQ ('^#') (${ VSub_Name install_path) 
                                                    (Lit_Other '$')
                                                  )
                                                }
                                                {(DQ (${ VSub_Name sfconf))}
                                              ]
                                              redirects: [
                                                (Redir
                                                  op: <Redir_Great '>'>
                                                  fd: 16777215
                                                  arg_word: {(/dev/null)}
                                                )
                                              ]
                                            )
                                            (BraceGroup
                                              children: [
                                                (C {(__vecho)} 
                                                  {
                                                    (DQ ('>>> Appending commented out entry to ') 
                                                      (${ VSub_Name sfconf) (' for ') (${ VSub_Name PF)
                                                    )
                                                  }
                                                )
                                                (SimpleCommand
                                                  words: [
                                                    {(echo)}
                                                    {
                                                      (DQ ('## ') 
                                                        (BracedVarSub
                                                          token: <VSub_Name ls_ret>
                                                          suffix_op: 
                                                            (StringUnary
                                                              op_id: VOp1_Percent
                                                              arg_word: {(${ VSub_Name ED) ('*')}
                                                            )
                                                          spids: [4200 4207]
                                                        ) (${ VSub_Name install_path)
                                                      )
                                                    }
                                                  ]
                                                  redirects: [
                                                    (Redir
                                                      op: <Redir_DGreat '>>'>
                                                      fd: 16777215
                                                      arg_word: {(DQ (${ VSub_Name sfconf))}
                                                    )
                                                  ]
                                                )
                                                (SimpleCommand
                                                  words: [
                                                    {(echo)}
                                                    {(DQ ('#') (${ VSub_Name install_path))}
                                                  ]
                                                  redirects: [
                                                    (Redir
                                                      op: <Redir_DGreat '>>'>
                                                      fd: 16777215
                                                      arg_word: {(DQ (${ VSub_Name sfconf))}
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [4179]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [4111 4251]
                                    )
                                  ]
                                  spids: [16777215 4061]
                                )
                              ]
                              else_action: [
                                (C {(__vecho)} 
                                  {
                                    (DQ ('suidctl feature set but you are lacking a ') 
                                      (${ VSub_Name sfconf)
                                    )
                                  }
                                )
                              ]
                              spids: [4254 4267]
                            )
                          ]
                          spids: [4043 4270]
                        )
                      spids: [4012 4041]
                    )
                  ]
                  spids: [16777215 3957]
                )
              ]
              spids: [16777215 4273]
            )
          ]
          spids: [3882]
        )
      spids: [3878 3881]
    )
    (FuncDef
      name: preinst_selinux_labels
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name D))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(eerror)} {(DQ (${ VSub_Name FUNCNAME) (': D is unset'))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 4300]
                )
              ]
              spids: [16777215 4318]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(has)} {(selinux)} {(${ VSub_Name FEATURES)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (AndOr
                                  ops: [Op_DAmp]
                                  children: [
                                    (C {(Lit_Other '[')} {(-f)} {(/selinux/context)} {(-o)} {(-f)} 
                                      {(/sys/fs/selinux/context)} {(Lit_Other ']')}
                                    )
                                    (C {(Lit_Other '[')} {(-x)} {(/usr/sbin/setfiles)} {(-a)} {(-x)} 
                                      {(/usr/sbin/selinuxconfig)} {(Lit_Other ']')}
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(__vecho)} {(DQ ('>>> Setting SELinux security labels'))})
                            (AndOr
                              ops: [Op_DPipe]
                              children: [
                                (Subshell
                                  child: 
                                    (CommandList
                                      children: [
                                        (Sentence
                                          child: 
                                            (AndOr
                                              ops: [Op_DPipe]
                                              children: [
                                                (C {(eval)} 
                                                  {
                                                    (DQ 
                                                      (CommandSubPart
                                                        command_list: 
                                                          (CommandList
                                                            children: [(C {(/usr/sbin/selinuxconfig)})]
                                                          )
                                                        left_token: <Left_CommandSub '$('>
                                                        spids: [4398 4400]
                                                      )
                                                    )
                                                  }
                                                )
                                                (C {(die)} 
                                                  {
                                                    (DQ ('Failed to determine SELinux policy paths.'))
                                                  }
                                                )
                                              ]
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                        (C {(addwrite)} {(/selinux/context)})
                                        (C {(addwrite)} {(/sys/fs/selinux/context)})
                                        (C {(/usr/sbin/setfiles)} {(-F)} 
                                          {(DQ (${ VSub_Name file_contexts_path))} {(-r)} {(DQ (${ VSub_Name D))} {(DQ (${ VSub_Name D))}
                                        )
                                      ]
                                    )
                                  spids: [4392 4452]
                                )
                                (C {(die)} {(DQ ('Failed to set SELinux security labels.'))})
                              ]
                            )
                          ]
                          spids: [16777215 4382]
                        )
                      ]
                      else_action: [(C {(__vecho)} {(DQ ('!!! Unable to set SELinux security labels'))})]
                      spids: [4463 4481]
                    )
                  ]
                  spids: [16777215 4332]
                )
              ]
              spids: [16777215 4484]
            )
          ]
          spids: [4282]
        )
      spids: [4278 4281]
    )
    (FuncDef
      name: __dyn_package
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:PROOT) op:Equal spids:[4498])]
              spids: [4496]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (Pipeline children:[(C {(___eapi_has_prefix_variables)})] negated:T)
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:EPREFIX)
                          op: Equal
                          rhs: {(EmptyPart)}
                          spids: [4514]
                        )
                        (assign_pair
                          lhs: (LhsName name:ED)
                          op: Equal
                          rhs: {(${ VSub_Name D)}
                          spids: [4516]
                        )
                      ]
                      spids: [4512]
                    )
                  ]
                  spids: [16777215 4509]
                )
              ]
              spids: [16777215 4522]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(cd)} {(DQ (${ VSub_Name T))}) (C {(die)})]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_n child:{(${ VSub_Name PKG_INSTALL_MASK)})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:PROOT)
                          op: Equal
                          rhs: {(${ VSub_Name T) (/packaging/)}
                          spids: [4566]
                        )
                      ]
                      spids: [4566]
                    )
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(rm)} {(-rf)} {(DQ (${ VSub_Name PROOT))})
                        (C {(die)} {(DQ ('failed removing stale package tree'))})
                      ]
                    )
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(cp)} {(-pPR)} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (AndOr
                                      ops: [Op_DAmp]
                                      children: [
                                        (Pipeline
                                          children: [(C {(cp)} {(--help)}) (C {(grep)} {(-qs)} {(-e-l)})]
                                          negated: F
                                        )
                                        (C {(echo)} {(-l)})
                                      ]
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [4604 4622]
                            )
                          } {(DQ (${ VSub_Name D))} {(DQ (${ VSub_Name PROOT))}
                        )
                        (C {(die)} {(DQ ('failed creating packaging tree'))})
                      ]
                    )
                    (C {(install_mask)} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name PROOT>
                            suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /)})
                            spids: [4653 4657]
                          ) (${ VSub_Name EPREFIX) (/)
                        )
                      } {(DQ (${ VSub_Name PKG_INSTALL_MASK))}
                    )
                  ]
                  spids: [16777215 4563]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:PROOT)
                      op: Equal
                      rhs: {(${ VSub_Name D)}
                      spids: [4674]
                    )
                  ]
                  spids: [4674]
                )
              ]
              spids: [4671 4680]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:tar_options) op:Equal rhs:{(DQ )} spids:[4686])]
              spids: [4684]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobEqual
                      left: {($ VSub_Name '$PORTAGE_VERBOSE')}
                      right: {(1)}
                    )
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:tar_options)
                      op: PlusEqual
                      rhs: {(DQ (' -v'))}
                      spids: [4703]
                    )
                  ]
                  spids: [4703]
                )
              ]
            )
            (AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(has)} {(xattr)} {(${ VSub_Name FEATURES)})
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (SimpleCommand
                                    words: [{(tar)} {(--help)}]
                                    redirects: [
                                      (Redir
                                        op: <Redir_Great '2>'>
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                      )
                                    ]
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [4721 4729]
                          )
                        }
                      right: {(Lit_Other '*') (--xattrs) (Lit_Other '*')}
                    )
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:tar_options)
                      op: PlusEqual
                      rhs: {(DQ (' --xattrs'))}
                      spids: [4741]
                    )
                  ]
                  spids: [4741]
                )
              ]
            )
            (C {(export)} {(Lit_VarLike 'SANDBOX_ON=') (DQ (0))})
            (AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name PORTAGE_BINPKG_TMPFILE))} 
                  {(Lit_Other ']')}
                )
                (C {(die)} {(DQ ('PORTAGE_BINPKG_TMPFILE is unset'))})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(mkdir)} {(-p)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name PORTAGE_BINPKG_TMPFILE>
                        suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
                        spids: [4791 4796]
                      )
                    )
                  }
                )
                (C {(die)} {(DQ ('mkdir failed'))})
              ]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name PORTAGE_COMPRESSION_COMMAND))} 
                  {(Lit_Other ']')}
                )
                (C {(die)} {(DQ ('PORTAGE_COMPRESSION_COMMAND is unset'))})
              ]
            )
            (Pipeline
              children: [
                (C {(tar)} {($ VSub_Name '$tar_options')} {(-cf)} {(-)} 
                  {($ VSub_Name '$PORTAGE_BINPKG_TAR_OPTS')} {(-C)} {(DQ (${ VSub_Name PROOT))} {(.)}
                )
                (SimpleCommand
                  words: [{($ VSub_Name '$PORTAGE_COMPRESSION_COMMAND')} {(-c)}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_Name '$PORTAGE_BINPKG_TMPFILE'))}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(assert)} 
              {
                (DQ ("failed to pack binary package: '") ($ VSub_Name '$PORTAGE_BINPKG_TMPFILE') ("'"))
              }
            )
            (SimpleCommand
              words: [
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name PORTAGE_PYTHON>
                      suffix_op: 
                        (StringUnary
                          op_id: VTest_ColonHyphen
                          arg_word: {(Lit_Slash /) (usr) (Lit_Slash /) (bin) (Lit_Slash /) (python)}
                        )
                      spids: [4887 4896]
                    )
                  )
                }
                {(DQ ($ VSub_Name '$PORTAGE_BIN_PATH')) (/xpak-helper.py)}
                {(recompose)}
                {(DQ ($ VSub_Name '$PORTAGE_BINPKG_TMPFILE'))}
                {(DQ ($ VSub_Name '$PORTAGE_BUILDDIR') (/build-info))}
              ]
              more_env: [
                (env_pair
                  name: PYTHONPATH
                  val: 
                    {
                      (BracedVarSub
                        token: <VSub_Name PORTAGE_PYTHONPATH>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(${ VSub_Name PORTAGE_PYM_PATH)}
                          )
                        spids: [4876 4882]
                      )
                    }
                  spids: [4875]
                )
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(rm)} {(-f)} {(DQ (${ VSub_Name PORTAGE_BINPKG_TMPFILE))})
                    (C {(die)} {(DQ ('Failed to append metadata to the tbz2 file'))})
                  ]
                  spids: [16777215 4931]
                )
              ]
              spids: [16777215 4952]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:md5_hash) op:Equal rhs:{(DQ )} spids:[4957])]
              spids: [4955]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [{(type)} {(md5sum)}]
                          redirects: [
                            (Redir
                              op: <Redir_AndGreat '&>'>
                              fd: 16777215
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:md5_hash)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(md5sum)} {(DQ (${ VSub_Name PORTAGE_BINPKG_TMPFILE))})
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [4977 4985]
                              )
                            }
                          spids: [4976]
                        )
                      ]
                      spids: [4976]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:md5_hash)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name md5_hash>
                                suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(' *')})
                                spids: [4989 4993]
                              )
                            }
                          spids: [4988]
                        )
                      ]
                      spids: [4988]
                    )
                  ]
                  spids: [16777215 4973]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [{(type)} {(md5)}]
                          redirects: [
                            (Redir
                              op: <Redir_AndGreat '&>'>
                              fd: 16777215
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:md5_hash)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(md5)} {(DQ (${ VSub_Name PORTAGE_BINPKG_TMPFILE))})]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [5011 5019]
                              )
                            }
                          spids: [5010]
                        )
                      ]
                      spids: [5010]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:md5_hash)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name md5_hash>
                                suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{('* ')})
                                spids: [5023 5027]
                              )
                            }
                          spids: [5022]
                        )
                      ]
                      spids: [5022]
                    )
                  ]
                  spids: [4996 5007]
                )
              ]
              spids: [16777215 5030]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name md5_hash))} {(Lit_Other ']')})
                (SimpleCommand
                  words: [{(echo)} {(${ VSub_Name md5_hash)}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(DQ (${ VSub_Name PORTAGE_BUILDDIR)) (/build-info/BINPKGMD5)}
                    )
                  ]
                )
              ]
            )
            (C {(__vecho)} {(DQ ('>>> Done.'))})
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_n child:{(${ VSub_Name PKG_INSTALL_MASK)})
                )
                (C {(rm)} {(-rf)} {(DQ (${ VSub_Name PROOT))})
              ]
            )
            (C {(cd)} {(DQ (${ VSub_Name PORTAGE_BUILDDIR))})
            (AndOr
              ops: [Op_DPipe]
              children: [
                (SimpleCommand
                  redirects: [
                    (Redir
                      op: <Redir_DGreat '>>'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_Name '$PORTAGE_BUILDDIR') (/.packaged))}
                    )
                  ]
                )
                (C {(die)} {(DQ ('Failed to create ') ($ VSub_Name '$PORTAGE_BUILDDIR') (/.packaged))})
              ]
            )
          ]
          spids: [4493]
        )
      spids: [4489 4492]
    )
    (FuncDef
      name: __dyn_spec
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:sources_dir)
                  op: Equal
                  rhs: {(${ VSub_Name T) (/rpmbuild/SOURCES)}
                  spids: [5140]
                )
              ]
              spids: [5138]
            )
            (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name sources_dir))})
            (Assignment
              keyword: Assign_Declare
              flags: [-a]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:tar_args)
                  op: Equal
                  rhs: {(ArrayLiteralPart words:[{(DQ (${ VSub_Name EBUILD))}])}
                  spids: [5162]
                )
              ]
              spids: [5158]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_d child:{(${ VSub_Name FILESDIR)})
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:tar_args)
                      op: Equal
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [{(DQ (${ VSub_Name EBUILD))} {(DQ (${ VSub_Name FILESDIR))}]
                          )
                        }
                      spids: [5184]
                    )
                  ]
                  spids: [5184]
                )
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(tar)} {(czf)} {(DQ (${ VSub_Name sources_dir) (/) (${ VSub_Name PF) (.tar.gz))} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name tar_args>
                        bracket_op: (WholeArray op_id:Lit_At)
                        spids: [5218 5223]
                      )
                    )
                  }
                )
                (C {(die)} {(DQ ('Failed to create base rpm tarball.'))})
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(__END1__)}
                  here_end_span_id: 5304
                  stdin_parts: [
                    ('Summary: ')
                    (${ VSub_Name DESCRIPTION)
                    ('\n')
                    ('Name: ')
                    (${ VSub_Name PN)
                    ('\n')
                    ('Version: ')
                    (${ VSub_Name PV)
                    ('\n')
                    ('Release: ')
                    (${ VSub_Name PR)
                    ('\n')
                    ('License: GPL\n')
                    ('Group: portage/')
                    (${ VSub_Name CATEGORY)
                    ('\n')
                    ('Source: ')
                    (${ VSub_Name PF)
                    ('.tar.gz\n')
                    ('%description\n')
                    (${ VSub_Name DESCRIPTION)
                    ('\n')
                    ('\n')
                    (${ VSub_Name HOMEPAGE)
                    ('\n')
                    ('\n')
                    ('%prep\n')
                    ('%setup -c\n')
                    ('\n')
                    ('%build\n')
                    ('\n')
                    ('%install\n')
                    ('\n')
                    ('%clean\n')
                    ('\n')
                    ('%files\n')
                    ('/\n')
                  ]
                )
                (Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {(${ VSub_Name PF) (.spec)}
                )
              ]
            )
          ]
          spids: [5135]
        )
      spids: [5131 5134]
    )
    (FuncDef
      name: __dyn_rpm
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (Pipeline children:[(C {(___eapi_has_prefix_variables)})] negated:T)
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:EPREFIX)
                          op: Equal
                          rhs: {(EmptyPart)}
                          spids: [5328]
                        )
                      ]
                      spids: [5326]
                    )
                  ]
                  spids: [16777215 5323]
                )
              ]
              spids: [16777215 5331]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(cd)} {(DQ (${ VSub_Name T))}) (C {(die)} {(DQ ('cd failed'))})]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:machine_name)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name CHOST>
                        suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{('-*')})
                        spids: [5355 5359]
                      )
                    }
                  spids: [5354]
                )
              ]
              spids: [5352]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dest_dir)
                  op: Equal
                  rhs: {(${ VSub_Name T) (/rpmbuild/RPMS/) (${ VSub_Name machine_name)}
                  spids: [5364]
                )
              ]
              spids: [5362]
            )
            (C {(addwrite)} {(DQ (${ VSub_Name RPMDIR))})
            (C {(__dyn_spec)})
            (AndOr
              ops: [Op_DPipe]
              children: [
                (SimpleCommand
                  words: [
                    {(rpmbuild)}
                    {(-bb)}
                    {(--clean)}
                    {(--nodeps)}
                    {(--rmsource)}
                    {(DQ (${ VSub_Name PF) (.spec))}
                    {(--buildroot)}
                    {(DQ (${ VSub_Name D))}
                    {(--target)}
                    {(DQ (${ VSub_Name CHOST))}
                  ]
                  more_env: [(env_pair name:HOME val:{(${ VSub_Name T)} spids:[5386])]
                )
                (C {(die)} {(DQ ('Failed to integrate rpm spec file'))})
              ]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(install)} {(-D)} 
                  {
                    (DQ (${ VSub_Name dest_dir) (/) (${ VSub_Name PN) (-) (${ VSub_Name PV) (-) 
                      (${ VSub_Name PR) (.) (${ VSub_Name machine_name) (.rpm)
                    )
                  } 
                  {
                    (DQ (${ VSub_Name RPMDIR) (/) (${ VSub_Name CATEGORY) (/) (${ VSub_Name PN) (-) 
                      (${ VSub_Name PV) (-) (${ VSub_Name PR) (.rpm)
                    )
                  }
                )
                (C {(die)} {(DQ ('Failed to move rpm'))})
              ]
            )
          ]
          spids: [5313]
        )
      spids: [5309 5312]
    )
    (FuncDef
      name: die_hooks
      body: 
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_f
                      child: {($ VSub_Name '$PORTAGE_BUILDDIR') (/.die_hooks)}
                    )
                )
                (ControlFlow token:<ControlFlow_Return return>)
              ]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:x) op:Equal spids:[5523])]
              spids: [5521]
            )
            (ForEach
              iter_name: x
              iter_words: [{($ VSub_Name '$EBUILD_DEATH_HOOKS')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [{($ VSub_Name '$x')}]
                      redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                  ]
                  spids: [5536 5545]
                )
              spids: [5531 5534]
            )
            (SimpleCommand
              redirects: [
                (Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {(DQ ($ VSub_Name '$PORTAGE_BUILDDIR') (/.die_hooks))}
                )
              ]
            )
          ]
          spids: [5504]
        )
      spids: [5500 5503]
    )
    (FuncDef
      name: success_hooks
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:x) op:Equal spids:[5567])]
              spids: [5565]
            )
            (ForEach
              iter_name: x
              iter_words: [{($ VSub_Name '$EBUILD_SUCCESS_HOOKS')}]
              do_arg_iter: F
              body: (DoGroup children:[(C {($ VSub_Name '$x')})] spids:[5580 5586])
              spids: [5575 5578]
            )
          ]
          spids: [5562]
        )
      spids: [5558 5561]
    )
    (FuncDef
      name: install_hooks
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:hooks_dir)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name PORTAGE_CONFIGROOT) (etc/portage/hooks/install))}
                  spids: [5600]
                )
              ]
              spids: [5598]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:fp) op:Equal spids:[5611])]
              spids: [5609]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:ret) op:Equal rhs:{(0)} spids:[5616])]
              spids: [5614]
            )
            (C {(shopt)} {(-s)} {(nullglob)})
            (ForEach
              iter_name: fp
              iter_words: [{(DQ (${ VSub_Name hooks_dir)) (/) (Lit_Other '*')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-x)} {(DQ ($ VSub_Name '$fp'))} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(DQ ($ VSub_Name '$fp'))})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:ret)
                                  op: Equal
                                  rhs: 
                                    {
                                      (ArithSubPart
                                        anode: 
                                          (ArithBinary
                                            op_id: Arith_Pipe
                                            left: (ArithWord w:{($ VSub_Name '$ret')})
                                            right: (ArithWord w:{($ VSub_QMark '$?')})
                                          )
                                        spids: [5667 5676]
                                      )
                                    }
                                  spids: [5666]
                                )
                              ]
                              spids: [5666]
                            )
                          ]
                          spids: [16777215 5658]
                        )
                      ]
                      spids: [16777215 5679]
                    )
                  ]
                  spids: [5642 5682]
                )
              spids: [5632 5640]
            )
            (C {(shopt)} {(-u)} {(nullglob)})
            (ControlFlow token:<ControlFlow_Return return> arg_word:{($ VSub_Name '$ret')})
          ]
          spids: [5595]
        )
      spids: [5591 5594]
    )
    (FuncDef
      name: eqatag
      body: (BraceGroup children:[(C {(__eqatag)} {(DQ (${ VSub_At '@'))})] spids:[5703])
      spids: [5699 5702]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name MISC_FUNCTIONS_ARGS))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(__source_all_bashrcs)})
            (AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$PORTAGE_DEBUG'))} 
                  {(Lit_Other '=') (Lit_Other '=')} {(DQ (1))} {(Lit_Other ']')}
                )
                (C {(set)} {(-x)})
              ]
            )
            (ForEach
              iter_name: x
              iter_words: [{(${ VSub_Name MISC_FUNCTIONS_ARGS)}]
              do_arg_iter: F
              body: (DoGroup children:[(C {(${ VSub_Name x)})] spids:[5771 5779])
              spids: [5765 5769]
            )
            (C {(unset)} {(x)})
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_n child:{($ VSub_Name '$PORTAGE_EBUILD_EXIT_FILE')})
                )
                (SimpleCommand
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(DQ ($ VSub_Name '$PORTAGE_EBUILD_EXIT_FILE'))}
                    )
                  ]
                )
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolUnary
                              op_id: BoolUnary_n
                              child: {($ VSub_Name '$PORTAGE_IPC_DAEMON')}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (DBracket
                      expr: 
                        (LogicalNot
                          child: (BoolUnary op_id:BoolUnary_s child:{($ VSub_Name '$SANDBOX_LOG')})
                        )
                    )
                    (C {(DQ ($ VSub_Name '$PORTAGE_BIN_PATH')) (/ebuild-ipc)} {(ControlFlow_Exit exit)} 
                      {($ VSub_QMark '$?')}
                    )
                  ]
                  spids: [16777215 5816]
                )
              ]
              spids: [16777215 5840]
            )
          ]
          spids: [16777215 5732]
        )
      ]
      spids: [16777215 5842]
    )
    (C {(Lit_Other ':')})
  ]
)