(command.CommandList
  children: [
    (command.ShFunction
      name: die
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(echo)} {(DQ ('ERROR: ') ($ Id.VSub_Star '$*'))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:18)
                  fd: -1
                  arg_word: {(/dev/stderr)}
                )
              ]
            )
            (command.Simple
              words: [{(patch)} {(-p0)} {(make.conf.example)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:29)
                  fd: -1
                  arg_word: {(make.conf.example.diff)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:34)
              arg_word: {(1)}
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.LogicalOr
                      left: 
                        (bool_expr.LogicalNot
                          child: (bool_expr.Unary op_id:Id.BoolUnary_f child:{(make.conf.example)})
                        )
                      right: 
                        (bool_expr.LogicalOr
                          left: 
                            (bool_expr.LogicalNot
                              child: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_f
                                  child: {(make.conf.example.x86.diff)}
                                )
                            )
                          right: 
                            (bool_expr.LogicalNot
                              child: (bool_expr.Unary op_id:Id.BoolUnary_d child:{(../.git)})
                            )
                        )
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:68)
            )
          ]
          action: [
            (command.Simple
              words: [{(echo)} {(DQ ('ERROR: current directory is invalid'))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:79)
                  fd: -1
                  arg_word: {(/dev/stderr)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:84)
              arg_word: {(1)}
            )
          ]
          spids: [41 70]
        )
      ]
    )
    (command.Simple
      words: [
        {(git)}
        {(diff)}
        {(--no-prefix)}
        {(--relative) (Id.Lit_Equals '=') 
          (DQ 
            (command_sub
              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:100)
              command_list: 
                (command.CommandList
                  children: [
                    (C {(basename)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:104)
                            command_list: (command.CommandList children:[(C {(pwd)})])
                          )
                        )
                      }
                    )
                  ]
                )
            )
          )
        }
        {(make.conf.example)}
      ]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:113)
          fd: -1
          arg_word: {(make.conf.example.diff)}
        )
      ]
    )
    (C {(git)} {(checkout)} {(--)} {(make.conf.example)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:archs)
          op: assign_op.Equal
          rhs: {(sh_array_literal left:(Token id:Id.Op_LParen val:'(' span_id:127))}
          spids: [126]
        )
      ]
    )
    (command.ForEach
      iter_name: x
      iter_words: [{(make.conf.example.) (Id.Lit_Star '*') (.diff)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:archs)
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (sh_array_literal
                        left: (Token id:Id.Op_LParen val:'(' span_id:145)
                        words: [
                          {
                            (DQ 
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:147)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(basename)} 
                                        {
                                          (braced_var_sub
                                            token: (Token id:Id.VSub_Name val:x span_id:151)
                                            suffix_op: 
                                              (suffix_op.Slice
                                                begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 18)})
                                              )
                                          )
                                        } {(.diff)}
                                      )
                                    ]
                                  )
                              )
                            )
                          }
                        ]
                      )
                    }
                  spids: [144]
                )
              ]
            )
          ]
        )
    )
    (command.ForEach
      iter_name: arch
      iter_words: [
        {
          (DQ 
            (braced_var_sub
              token: (Token id:Id.VSub_Name val:archs span_id:173)
              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
            )
          )
        }
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {(echo)} {(DQ ('* Patching ') (${ Id.VSub_Name arch))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(cp)} {(make.conf.example)} {(make.conf.example.) (${ Id.VSub_Name arch)})
                (C {(die)} {(DQ ('copy failed'))})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [{(patch)} {(-p0)} {(make.conf.example.) (${ Id.VSub_Name arch)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Less val:'<' span_id:221)
                      fd: -1
                      arg_word: {(make.conf.example.) (${ Id.VSub_Name arch) (.diff)}
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:229)
                      fd: -1
                      arg_word: {(/dev/null)}
                    )
                  ]
                )
                (C {(die)} {(DQ ('arch-patch failed'))})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [{(patch)} {(-p0)} {(make.conf.example.) (${ Id.VSub_Name arch)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Less val:'<' span_id:251)
                      fd: -1
                      arg_word: {(make.conf.example.diff)}
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:255)
                      fd: -1
                      arg_word: {(/dev/null)}
                    )
                  ]
                )
                (C {(die)} {(DQ ('patch failed'))})
              ]
            )
          ]
        )
    )
    (C {(echo)} {(DQ ('* Re-patching make.conf.example'))})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{(patch)} {(-p0)} {(make.conf.example)}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Less val:'<' span_id:282)
              fd: -1
              arg_word: {(make.conf.example.diff)}
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:286)
              fd: -1
              arg_word: {(/dev/null)}
            )
          ]
        )
        (C {(die)} {(DQ ('repatch failed'))})
      ]
    )
    (command.ForEach
      iter_name: arch
      iter_words: [
        {
          (DQ 
            (braced_var_sub
              token: (Token id:Id.VSub_Name val:archs span_id:307)
              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
            )
          )
        }
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {(echo)} {(DQ ('* Creating diff for ') (${ Id.VSub_Name arch))})
            (command.Simple
              words: [{(diff)} {(-u)} {(make.conf.example)} {(make.conf.example.) (${ Id.VSub_Name arch)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:339)
                  fd: -1
                  arg_word: {(make.conf.example.) (${ Id.VSub_Name arch) (.diff)}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_z
                      child: {(${ Id.VSub_Name KEEP_ARCH_MAKE_CONF_EXAMPLE)}
                    )
                )
                (C {(rm)} {(-f)} {(make.conf.example.) (${ Id.VSub_Name arch)} 
                  {(make.conf.example.) (${ Id.VSub_Name arch) (.orig)}
                )
              ]
            )
          ]
        )
    )
    (C {(rm)} {(make.conf.example.diff)})
    (C {(echo)} {(DQ (Done))})
  ]
)