(command.CommandList
  children: [
    (command.FuncDef
      name: die
      body: 
        (command.BraceGroup
          children: [
            (command.SimpleCommand
              words: [{(echo)} {(DQ ('ERROR: ') ($ VSub_Star '$*'))}]
              redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/stderr)})]
            )
            (command.SimpleCommand
              words: [{(patch)} {(-p0)} {(make.conf.example)}]
              redirects: [
                (redir.Redir
                  op: <Redir_Less '<'>
                  fd: 16777215
                  arg_word: {(make.conf.example.diff)}
                )
              ]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [8]
        )
      spids: [4 7]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.LogicalOr
                      left: 
                        (bool_expr.LogicalNot
                          child: (bool_expr.BoolUnary op_id:BoolUnary_f child:{(make.conf.example)})
                        )
                      right: 
                        (bool_expr.LogicalOr
                          left: 
                            (bool_expr.LogicalNot
                              child: 
                                (bool_expr.BoolUnary
                                  op_id: BoolUnary_f
                                  child: {(make.conf.example.x86.diff)}
                                )
                            )
                          right: 
                            (bool_expr.LogicalNot
                              child: (bool_expr.BoolUnary op_id:BoolUnary_d child:{(../.git)})
                            )
                        )
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.SimpleCommand
              words: [{(echo)} {(DQ ('ERROR: current directory is invalid'))}]
              redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/stderr)})]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 70]
        )
      ]
      spids: [16777215 88]
    )
    (command.SimpleCommand
      words: [
        {(git)}
        {(diff)}
        {(--no-prefix)}
        {(--relative) (Lit_Other '=') 
          (DQ 
            (word_part.CommandSubPart
              command_list: 
                (command.CommandList
                  children: [
                    (C {(basename)} 
                      {
                        (DQ 
                          (word_part.CommandSubPart
                            command_list: (command.CommandList children:[(C {(pwd)})])
                            left_token: <Left_CommandSub '$('>
                            spids: [104 106]
                          )
                        )
                      }
                    )
                  ]
                )
              left_token: <Left_CommandSub '$('>
              spids: [100 108]
            )
          )
        }
        {(make.conf.example)}
      ]
      redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(make.conf.example.diff)})]
    )
    (C {(git)} {(checkout)} {(--)} {(make.conf.example)})
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:archs spids:[126])
          op: Equal
          rhs: {(word_part.ArrayLiteralPart)}
          spids: [126]
        )
      ]
      spids: [126]
    )
    (command.ForEach
      iter_name: x
      iter_words: [{(make.conf.example.) (Lit_Other '*') (.diff)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:archs spids:[144])
                  op: PlusEqual
                  rhs: 
                    {
                      (word_part.ArrayLiteralPart
                        words: [
                          {
                            (DQ 
                              (word_part.CommandSubPart
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(basename)} 
                                        {
                                          (word_part.BracedVarSub
                                            token: <VSub_Name x>
                                            suffix_op: 
                                              (suffix_op.Slice
                                                begin: (arith_expr.ArithWord w:{(Lit_Digits 18)})
                                              )
                                            spids: [150 154]
                                          )
                                        } {(.diff)}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [147 157]
                              )
                            )
                          }
                        ]
                      )
                    }
                  spids: [144]
                )
              ]
              spids: [144]
            )
          ]
          spids: [141 161]
        )
      spids: [135 139]
    )
    (command.ForEach
      iter_name: arch
      iter_words: [
        {
          (DQ 
            (word_part.BracedVarSub
              token: <VSub_Name archs>
              bracket_op: (bracket_op.WholeArray op_id:Lit_At)
              spids: [172 177]
            )
          )
        }
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {(echo)} {(DQ ('* Patching ') (${ VSub_Name arch))})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(cp)} {(make.conf.example)} {(make.conf.example.) (${ VSub_Name arch)})
                (C {(die)} {(DQ ('copy failed'))})
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (command.SimpleCommand
                  words: [{(patch)} {(-p0)} {(make.conf.example.) (${ VSub_Name arch)}]
                  redirects: [
                    (redir.Redir
                      op: <Redir_Less '<'>
                      fd: 16777215
                      arg_word: {(make.conf.example.) (${ VSub_Name arch) (.diff)}
                    )
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(/dev/null)}
                    )
                  ]
                )
                (C {(die)} {(DQ ('arch-patch failed'))})
              ]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (command.SimpleCommand
                  words: [{(patch)} {(-p0)} {(make.conf.example.) (${ VSub_Name arch)}]
                  redirects: [
                    (redir.Redir
                      op: <Redir_Less '<'>
                      fd: 16777215
                      arg_word: {(make.conf.example.diff)}
                    )
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(/dev/null)}
                    )
                  ]
                )
                (C {(die)} {(DQ ('patch failed'))})
              ]
            )
          ]
          spids: [181 267]
        )
      spids: [170 179]
    )
    (C {(echo)} {(DQ ('* Re-patching make.conf.example'))})
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (command.SimpleCommand
          words: [{(patch)} {(-p0)} {(make.conf.example)}]
          redirects: [
            (redir.Redir
              op: <Redir_Less '<'>
              fd: 16777215
              arg_word: {(make.conf.example.diff)}
            )
            (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})
          ]
        )
        (C {(die)} {(DQ ('repatch failed'))})
      ]
    )
    (command.ForEach
      iter_name: arch
      iter_words: [
        {
          (DQ 
            (word_part.BracedVarSub
              token: <VSub_Name archs>
              bracket_op: (bracket_op.WholeArray op_id:Lit_At)
              spids: [306 311]
            )
          )
        }
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {(echo)} {(DQ ('* Creating diff for ') (${ VSub_Name arch))})
            (command.SimpleCommand
              words: [{(diff)} {(-u)} {(make.conf.example)} {(make.conf.example.) (${ VSub_Name arch)}]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {(make.conf.example.) (${ VSub_Name arch) (.diff)}
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.BoolUnary
                      op_id: BoolUnary_z
                      child: {(${ VSub_Name KEEP_ARCH_MAKE_CONF_EXAMPLE)}
                    )
                )
                (C {(rm)} {(-f)} {(make.conf.example.) (${ VSub_Name arch)} 
                  {(make.conf.example.) (${ VSub_Name arch) (.orig)}
                )
              ]
            )
          ]
          spids: [315 375]
        )
      spids: [304 313]
    )
    (C {(rm)} {(make.conf.example.diff)})
    (C {(echo)} {(DQ (Done))})
  ]
)