(command.CommandList
  children: [
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<.>} {<./build.conf>})
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
    )
    (C {<.>} {<./funcs.sh>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CWD)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                command_list: (command.CommandList children:[(C {<pwd>})])
              )
            }
          spids: [28]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Pipeline
          children: [(C {<wget>} {<--help>}) (C {<grep>} {<-q>} {(SQ <'\\-\\-show\\-progress'>)})]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:WGET_SHOW_PROGRESS)
              op: assign_op.Equal
              rhs: {(SQ <'-q --show-progress'>)}
              spids: [51]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WGET_OPT)
          op: assign_op.Equal
          rhs: {(SQ <'--no-check-certificate '>) (${ Id.VSub_Name WGET_SHOW_PROGRESS)}
          spids: [56]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MWD)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                command_list: (command.CommandList children:[(C {<pwd>})])
              )
            }
          spids: [65]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BUILD_LOG)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name MWD) </build.log>}
          spids: [70]
        )
      ]
    )
    (command.ShFunction
      name: log_msg
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {<echo>} {<-e>} {(DQ ($ Id.VSub_At '$@'))})
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.Simple
                  words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_At '$@'))}]
                  redirects: [
                    (redir.Redir
                      op: <Id.Redir_DGreat '>>'>
                      fd: -1
                      arg_word: {(${ Id.VSub_Name BUILD_LOG)}
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: exit_error
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {<log_msg>} {(DQ ($ Id.VSub_At '$@'))})
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ForEach
      iter_name: i
      iter_words: [{($ Id.VSub_At '$@')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$i')}
              arms: [
                (case_arm
                  pat_list: [{<clean>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:DO_CLEAN)
                              op: assign_op.Equal
                              rhs: {<1>}
                              spids: [157]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Break break>)
                  ]
                  spids: [154 155 164 -1]
                )
                (case_arm
                  pat_list: [{<auto>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:AUTO)
                              op: assign_op.Equal
                              rhs: {<yes>}
                              spids: [170]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [167 168 177 -1]
                )
                (case_arm
                  pat_list: [{<nopae>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:x86_disable_pae)
                              op: assign_op.Equal
                              rhs: {<yes>}
                              spids: [183]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [180 181 190 -1]
                )
                (case_arm
                  pat_list: [{<pae>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:x86_enable_pae)
                              op: assign_op.Equal
                              rhs: {<yes>}
                              spids: [199]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [196 197 206 -1]
                )
                (case_arm
                  pat_list: [{<i486>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:x86_set_i486)
                              op: assign_op.Equal
                              rhs: {<yes>}
                              spids: [215]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [212 213 222 -1]
                )
                (case_arm
                  pat_list: [{<i686>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:x86_set_i686)
                              op: assign_op.Equal
                              rhs: {<yes>}
                              spids: [231]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [228 229 238 -1]
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$DO_CLEAN')} {<Id.Lit_RBracket ']'>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {(DQ <'Please wait...'>)})
            (C {<rm>} {<-rf>} 
              (word.BracedTree
                parts: [
                  <./>
                  (word_part.BracedTuple
                    words: [
                      {<aufs> <Id.Lit_Star '*'>}
                      {<kernel> <Id.Lit_Star '*'>}
                      {<build.log> <Id.Lit_Star '*'>}
                      {<linux-> <Id.Lit_Star '*'>}
                    ]
                  )
                ]
              )
            )
            (C {<echo>} {(DQ <'Cleaning complete'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
          spids: [249 259]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-f>} {<build.log>} {<Id.Lit_RBracket ']'>})
        (C {<rm>} {<-f>} {<build.log>})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-f>} {<build.log.tar.bz2>} {<Id.Lit_RBracket ']'>})
        (C {<mv>} {<-f>} {<build.log.> (${ Id.VSub_Name today) <.tar.bz2>})
      ]
    )
    (command.ForEach
      iter_name: app
      iter_words: [{<git>} {<gcc>} {<make>}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [{($ Id.VSub_DollarName '$app')} {<--version>}]
                  redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
                )
                (C {<exit_error>} 
                  {(DQ <Id.Lit_Other '\\'> <'033[1;31m'>) 
                    (DQ ($ Id.VSub_DollarName '$app') <' is not installed'>) (DQ <Id.Lit_Other '\\'> <'033[0m'>)
                  }
                )
              ]
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<which>} {<mksquashfs>}]
          redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
        )
        (C {<exit_error>} 
          {(DQ <Id.Lit_Other '\\'> <'033[1;30m'>) (DQ <'mksquashfs is not installed'>) 
            (DQ <Id.Lit_Other '\\'> <'033[0m'>)
          }
        )
      ]
    )
    (C {<log_ver>})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<which>} {<cc>}]
          redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
        )
        (C {<ln>} {<-sv>} 
          {
            (command_sub
              left_token: <Id.Left_DollarParen '$('>
              command_list: (command.CommandList children:[(C {<which>} {<gcc>})])
            )
          } {</usr/bin/cc>}
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$AUTO'))} {<Id.Lit_Equals '='>} 
                  {(DQ <yes>)} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} 
                  {(DQ ($ Id.VSub_DollarName '$DOTconfig_file'))} {<Id.Lit_RBracket ']'>}
                )
                (C {<exit_error>} {(DQ <'Must specify DOTconfig_file=<file> in build.conf'>)})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {(DQ ($ Id.VSub_DollarName '$FW_PKG_URL'))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<exit_error>} {(DQ <'Must specify FW_PKG_URL=<url> in build.conf'>)})
              ]
            )
          ]
          spids: [439 457]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {(DQ ($ Id.VSub_DollarName '$JOBS'))} 
                  {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:JOBS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {<grep>} {(DQ <'^processor'>)} {</proc/cpuinfo>})
                                  (C {<wc>} {<-l>})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [520]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$JOBS')} {<-ge>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:JOBS)
                      op: assign_op.Equal
                      rhs: {(DQ <-j> (${ Id.VSub_Name JOBS))}
                      spids: [550]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:JOBS)
                      op: assign_op.Equal
                      rhs: {(DQ )}
                      spids: [560]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [503 517]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$JOBS'))} {<Id.Lit_RBracket ']'>})
        (C {<log_msg>} 
          {
            (DQ <'Jobs for make: '> 
              (braced_var_sub
                token: <Id.VSub_Name JOBS>
                suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{<-j>})
              )
            )
          }
        )
        (C {<echo>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$DOTconfig_file'))} {<-a>} 
                  {<Id.KW_Bang '!'>} {<-f>} {(DQ ($ Id.VSub_DollarName '$DOTconfig_file'))} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<exit_error>} 
              {
                (DQ <'File not found: '> ($ Id.VSub_DollarName '$DOTconfig_file') 
                  <' (see build.conf - DOTconfig_file=)'>
                )
              }
            )
          ]
          spids: [596 618]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName '$DOTconfig_file'))} 
                  {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CONFIGS_DIR)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name DOTconfig_file>
                        suffix_op: 
                          (suffix_op.Unary
                            op_id: Id.VOp1_Percent
                            arg_word: {<Id.Lit_Slash /> <'*'>}
                          )
                      )
                    }
                  spids: [649]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:Choice)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name DOTconfig_file>
                        suffix_op: 
                          (suffix_op.Unary
                            op_id: Id.VOp1_DPound
                            arg_word: {<'*'> <Id.Lit_Slash />}
                          )
                      )
                    }
                  spids: [661]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$CONFIGS_DIR'))} 
                  {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$Choice'))} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:CONFIGS_DIR)
                      op: assign_op.Equal
                      rhs: {<.>}
                      spids: [689]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [632 646]
        )
      ]
      else_action: [
        (command.AndOr
          ops: [Id.Op_DAmp]
          children: [
            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$AUTO'))} {<Id.Lit_Equals '='>} 
              {(DQ <yes>)} {<Id.Lit_RBracket ']'>}
            )
            (C {<exit_error>} {(DQ <'Must specify DOTconfig_file=<file> in build.conf'>)})
          ]
        )
        (command.AndOr
          ops: [Id.Op_DAmp]
          children: [
            (C {<Id.Lit_LBracket '['>} {<-f>} {</tmp/kernel_configs>} {<Id.Lit_RBracket ']'>})
            (C {<rm>} {<-f>} {</tmp/kernel_configs>})
          ]
        )
        (command.Case
          to_match: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                command_list: (command.CommandList children:[(C {<uname>} {<-m>})])
              )
            }
          arms: [
            (case_arm
              pat_list: [{<i> <Id.Lit_QMark '?'> <86>}]
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:HOST_ARCH)
                      op: assign_op.Equal
                      rhs: {<x86>}
                      spids: [759]
                    )
                  ]
                )
              ]
              spids: [754 757 762 -1]
            )
            (case_arm
              pat_list: [{<x86_64>}]
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:HOST_ARCH)
                      op: assign_op.Equal
                      rhs: {<x86_64>}
                      spids: [768]
                    )
                  ]
                )
              ]
              spids: [765 766 771 -1]
            )
            (case_arm
              pat_list: [{<arm> <Id.Lit_Star '*'>}]
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:HOST_ARCH)
                      op: assign_op.Equal
                      rhs: {<arm>}
                      spids: [778]
                    )
                  ]
                )
              ]
              spids: [774 776 781 -1]
            )
            (case_arm
              pat_list: [{<Id.Lit_Star '*'>}]
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:HOST_ARCH)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            command_list: (command.CommandList children:[(C {<uname>} {<-m>})])
                          )
                        }
                      spids: [787]
                    )
                  ]
                )
              ]
              spids: [784 785 794 -1]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:CONFIGS_DIR)
              op: assign_op.Equal
              rhs: {<configs_> (${ Id.VSub_Name HOST_ARCH)}
              spids: [801]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:CONFIGS)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    command_list: 
                      (command.CommandList
                        children: [
                          (command.Pipeline
                            children: [
                              (command.Simple
                                words: [
                                  {<ls>}
                                  {<./> (${ Id.VSub_Name CONFIGS_DIR) </DOTconfig> <Id.Lit_Star '*'>}
                                ]
                                redirects: [
                                  (redir.Redir
                                    op: <Id.Redir_Great '2>'>
                                    fd: 2
                                    arg_word: {</dev/null>}
                                  )
                                ]
                              )
                              (C {<sed>} {(SQ <'s|.*/||'>)})
                              (C {<sort>} {<-n>})
                            ]
                            negated: F
                          )
                        ]
                      )
                  )
                }
              spids: [808]
            )
          ]
        )
        (C {<echo>})
        (C {<echo>} {(DQ <'Select the config file you want to use'>)})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:NUM)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [852]
            )
          ]
        )
        (command.ForEach
          iter_name: C
          iter_words: [{($ Id.VSub_DollarName '$CONFIGS')}]
          do_arg_iter: F
          body: 
            (command.DoGroup
              children: [
                (command.Simple
                  words: [{<echo>} {(DQ (${ Id.VSub_Name NUM) <'. '> ($ Id.VSub_DollarName '$C'))}]
                  redirects: [
                    (redir.Redir
                      op: <Id.Redir_DGreat '>>'>
                      fd: -1
                      arg_word: {</tmp/kernel_configs>}
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:NUM)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (word_part.ArithSub
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Plus
                                left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$NUM')})
                                right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                              )
                          )
                        }
                      spids: [883]
                    )
                  ]
                )
              ]
            )
        )
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: (C {<Id.Lit_LBracket '['>} {<-f>} {<DOTconfig>} {<Id.Lit_RBracket ']'>})
                  terminator: <Id.Op_Semi _>
                )
              ]
              action: [
                (command.Simple
                  words: [{<echo>} {(DQ <'d. Default - current DOTconfig (./DOTconfig)'>)}]
                  redirects: [
                    (redir.Redir
                      op: <Id.Redir_DGreat '>>'>
                      fd: -1
                      arg_word: {</tmp/kernel_configs>}
                    )
                  ]
                )
              ]
              spids: [897 909]
            )
          ]
        )
        (command.Simple
          words: [{<echo>} {(DQ <'n. New DOTconfig'>)}]
          redirects: [(redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{</tmp/kernel_configs>})]
        )
        (C {<cat>} {</tmp/kernel_configs>})
        (command.Sentence
          child: (C {<echo>} {<-n>} {(DQ <'Enter choice: '>)})
          terminator: <Id.Op_Semi _>
        )
        (C {<read>} {<Chosen>})
        (command.AndOr
          ops: [Id.Op_DAmp]
          children: [
            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {(DQ ($ Id.VSub_DollarName '$Chosen'))} {<-a>} 
              {<Id.KW_Bang '!'>} {<-f>} {<DOTconfig>} {<Id.Lit_RBracket ']'>}
            )
            (C {<exit_error>} 
              {(DQ <Id.Lit_Other '\\'> <'033[1;31m'>) (DQ <'ERROR: invalid choice, start again!'>) 
                (DQ <Id.Lit_Other '\\'> <'033[0m'>)
              }
            )
          ]
        )
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$Chosen'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:Choice)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Pipeline
                                    children: [
                                      (C {<grep>} 
                                        {
                                          (DQ <'^'> ($ Id.VSub_DollarName '$Chosen') 
                                            <Id.Lit_Other '\\'> <.>
                                          )
                                        } {</tmp/kernel_configs>}
                                      )
                                      (C {<cut>} {<-d>} {(SQ <' '>)} {<-f2>})
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                          )
                        }
                      spids: [1007]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {(DQ ($ Id.VSub_DollarName '$Choice'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                    (C {<exit_error>} 
                      {(DQ <Id.Lit_Other '\\'> <'033[1;31m'>) 
                        (DQ <'ERROR: your choice is not sane ..quiting'>) (DQ <Id.Lit_Other '\\'> <'033[0m'>)
                      }
                    )
                  ]
                )
              ]
              spids: [992 1004]
            )
          ]
          else_action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:Choice)
                  op: assign_op.Equal
                  rhs: {<Default>}
                  spids: [1064]
                )
              ]
            )
          ]
        )
        (C {<echo>} {<-en>} 
          {
            (DQ <Id.Lit_Other '\\'> <'nYou chose '> ($ Id.VSub_DollarName '$Choice') <'. \n'> 
              <'If this is ok hit ENTER, if not hit CTRL|C to quit: '>
            )
          }
        )
        (C {<read>} {<oknow>})
      ]
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$Choice')}
      arms: [
        (case_arm
          pat_list: [{<Default>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:kver)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {<grep>} {(SQ <'kernel_version='>)} {<DOTconfig>})
                                  (C {<head>} {<-1>})
                                  (C {<tr>} {<-s>} {(SQ <' '>)})
                                  (C {<cut>} {<-d>} {(SQ <'='>)} {<-f2>})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [1103]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$kver'))} 
                          {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$kernel_ver'))} 
                                  {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (C {<echo>} {<-n>} {(DQ <'Enter kernel version for DOTconfig: '>)})
                            (C {<read>} {<kernel_version>})
                            (command.AndOr
                              ops: [Id.Op_DAmp Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} 
                                  {($ Id.VSub_DollarName '$kernel_version')} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<echo>} {(DQ <ERROR>)})
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Exit exit>
                                  arg_word: {<1>}
                                )
                              ]
                            )
                            (command.Simple
                              words: [
                                {<echo>}
                                {(DQ <'kernel_version='> (${ Id.VSub_Name kernel_version))}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: <Id.Redir_DGreat '>>'>
                                  fd: -1
                                  arg_word: {<DOTconfig>}
                                )
                              ]
                            )
                          ]
                          spids: [1163 1180]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:kernel_version)
                              op: assign_op.Equal
                              rhs: {(${ Id.VSub_Name kernel_ver)}
                              spids: [1237]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [1143 1160]
                )
              ]
            )
          ]
          spids: [1099 1100 1252 -1]
        )
        (case_arm
          pat_list: [{<New>}]
          action: [
            (C {<rm>} {<-f>} {<DOTconfig>})
            (C {<echo>} {<-n>} {(DQ <'Enter kernel version (ex: 3.14.73) : '>)})
            (C {<read>} {<kernel_version>})
          ]
          spids: [1255 1256 1280 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$Choice'))}
              arms: [
                (case_arm
                  pat_list: [{<DOTconfig-> <Id.Lit_Star '*'>}]
                  action: [
                    (command.Simple
                      words: [{<read>} {<dconf>} {<kernel_version>} {<kernel_version_info>}]
                      redirects: [
                        (redir.Redir
                          op: <Id.Redir_TLess '<<<'>
                          fd: -1
                          arg_word: 
                            {(${ Id.VSub_Name CONFIGS_DIR) </> ($ Id.VSub_DollarName '$Choice')}
                        )
                      ]
                      more_env: [(env_pair name:IFS val:{<->} spids:[1300])]
                    )
                  ]
                  spids: [1295 1297 1319 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:kernel_version)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [1325]
                        )
                      ]
                    )
                  ]
                  spids: [1322 1323 1329 -1]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} 
                          {(DQ ($ Id.VSub_DollarName '$kernel_version'))} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:kver)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {<grep>} {(SQ <'kernel_version='>)} 
                                            {(${ Id.VSub_Name CONFIGS_DIR) </> 
                                              ($ Id.VSub_DollarName '$Choice')
                                            }
                                          )
                                          (C {<head>} {<-1>})
                                          (C {<tr>} {<-s>} {(SQ <' '>)})
                                          (C {<cut>} {<-d>} {(SQ <'='>)} {<-f2>})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [1352]
                        )
                      ]
                    )
                    (C {<sed>} {<-i>} {(SQ <'/^kernel_version/d'>)} 
                      {(${ Id.VSub_Name CONFIGS_DIR) </> ($ Id.VSub_DollarName '$Choice')}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:kernel_version)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name kver)}
                          spids: [1411]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$kernel_ver'))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:kernel_version)
                              op: assign_op.Equal
                              rhs: {(${ Id.VSub_Name kernel_ver)}
                              spids: [1427]
                            )
                          ]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} 
                                  {(DQ ($ Id.VSub_DollarName '$kernel_version'))} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {(DQ <'kernel_version='> (${ Id.VSub_Name kernel_version))}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: <Id.Redir_DGreat '>>'>
                                  fd: -1
                                  arg_word: {<DOTconfig>}
                                )
                              ]
                            )
                            (command.Simple
                              words: [
                                {<echo>}
                                {(DQ <'kernel_version_info='> (${ Id.VSub_Name kernel_version_info))}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: <Id.Redir_DGreat '>>'>
                                  fd: -1
                                  arg_word: {<DOTconfig>}
                                )
                              ]
                            )
                          ]
                          spids: [1436 1448]
                        )
                      ]
                      else_action: [
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$AUTO'))} 
                              {<Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>}
                            )
                            (C {<exit_error>} {(DQ <'Must specify kernel_ver=<version> in build.conf'>)})
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [1335 1349]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} 
                          {(DQ (${ Id.VSub_Name CONFIGS_DIR) </> ($ Id.VSub_DollarName '$Choice'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <./DOTconfig>)} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<cp>} {<-afv>} 
                      {(${ Id.VSub_Name CONFIGS_DIR) </> ($ Id.VSub_DollarName '$Choice')} {<DOTconfig>}
                    )
                  ]
                  spids: [1511 1534]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} 
                  {(DQ ($ Id.VSub_DollarName '$package_name_suffix'))} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:package_name_suffix)
                      op: assign_op.Equal
                      rhs: {(${ Id.VSub_Name kinfo)}
                      spids: [1565]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [1283 1284 1571 -1]
        )
      ]
    )
    (C {<log_msg>} {(DQ <'kernel_version='> (${ Id.VSub_Name kernel_version))})
    (C {<log_msg>} {(DQ <'kernel_version_info='> (${ Id.VSub_Name kernel_version_info))})
    (command.Case
      to_match: {(DQ ($ Id.VSub_DollarName '$kernel_version'))}
      arms: [
        (case_arm
          pat_list: [{<3.> <Id.Lit_Star '*'>} {<4.> <Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ok)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [1610]
                )
              ]
            )
          ]
          spids: [1603 1608 1613 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [(C {<exit_error>} {(DQ <'ERROR: Unsupported kernel version'>)})]
          spids: [1619 1620 1628 -1]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$Choice'))} 
                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <New>)} {<-a>} {<Id.KW_Bang '!'>} {<-f>} {<DOTconfig>} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<exit_error>} 
              {(DQ <Id.Lit_Other '\\'> <'033[1;31m'>) (DQ <'ERROR: No DOTconfig found ..quiting'>) 
                (DQ <Id.Lit_Other '\\'> <'033[0m'>)
              }
            )
          ]
          spids: [1633 1660]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FW_URL)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name FW_URL>
                suffix_op: 
                  (suffix_op.Unary
                    op_id: Id.VTest_ColonHyphen
                    arg_word: 
                      {<'http:'> <Id.Lit_Slash /> <Id.Lit_Slash /> <distro.ibiblio.org> <Id.Lit_Slash /> 
                        <puppylinux> <Id.Lit_Slash /> <firmware>
                      }
                  )
              )
            }
          spids: [1683]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aufs_git_3)
          op: assign_op.Equal
          rhs: {(DQ <'git://git.code.sf.net/p/aufs/aufs3-standalone.git'>)}
          spids: [1700]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aufs_git_4)
          op: assign_op.Equal
          rhs: {(DQ <'git://github.com/sfjro/aufs4-standalone.git'>)}
          spids: [1705]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {(DQ ($ Id.VSub_DollarName '$kernel_mirrors'))} 
          {<Id.Lit_RBracket ']'>}
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:kernel_mirrors)
              op: assign_op.Equal
              rhs: {(DQ <'ftp://www.kernel.org/pub/linux/kernel'>)}
              spids: [1722]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ksubdir_3)
          op: assign_op.Equal
          rhs: {<v3.x>}
          spids: [1727]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ksubdir_4)
          op: assign_op.Equal
          rhs: {<v4.x>}
          spids: [1733]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:rn)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Percent
                        left: (arith_expr.VarRef token:<Id.Lit_ArithVarLike RANDOM>)
                        right: 
                          (arith_expr.ArithWord
                            w: 
                              {
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (C {<echo>} {(DQ ($ Id.VSub_DollarName '$kernel_mirrors'))})
                                            (C {<wc>} {<-l>})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                )
                              }
                          )
                      )
                    right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                  )
              )
            }
          spids: [1739]
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:x) op:assign_op.Equal rhs:{<0>} spids:[1771])]
    )
    (command.ForEach
      iter_name: i
      iter_words: [{($ Id.VSub_DollarName '$kernel_mirrors')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:x)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Plus
                            left: (arith_expr.VarRef token:<Id.Lit_ArithVarLike x>)
                            right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                          )
                      )
                    }
                  spids: [1787]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$x')} {<-eq>} 
                  {($ Id.VSub_DollarName '$rn')} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:first)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_DollarName '$i'))}
                      spids: [1808]
                    )
                  ]
                )
                (command.ControlFlow token:<Id.ControlFlow_Continue continue>)
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:km)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$km') <' '> ($ Id.VSub_DollarName '$i'))}
                  spids: [1818]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:kernel_mirrors)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$first') <' '> ($ Id.VSub_DollarName '$km'))}
          spids: [1827]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<Id.Lit_LBracket '['>} {<-f>} {</etc/DISTRO_SPECS>} {<Id.Lit_RBracket ']'>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<.>} {</etc/DISTRO_SPECS>})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} 
                  {(DQ ($ Id.VSub_DollarName '$package_name_suffix'))} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:package_name_suffix)
                      op: assign_op.Equal
                      rhs: {(${ Id.VSub_Name DISTRO_FILE_PREFIX)}
                      spids: [1870]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [1838 1850]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<Id.Lit_LBracket '['>} {<-f>} {<DOTconfig>} {<Id.Lit_RBracket ']'>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.Sentence child:(C {<echo>}) terminator:<Id.Op_Semi _>)
            (command.Sentence
              child: (C {<tail>} {<-n10>} {<README>})
              terminator: <Id.Op_Semi _>
            )
            (C {<echo>})
            (command.ForEach
              iter_name: i
              iter_words: [
                {<Id.Lit_VarLike 'CONFIG_AUFS_FS='> <y>}
                {<Id.Lit_VarLike 'CONFIG_NLS_CODEPAGE_850='> <y>}
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<grep>} {<-q>} {(DQ ($ Id.VSub_DollarName '$i'))} {<DOTconfig>})
                        (command.BraceGroup
                          children: [
                            (command.Sentence
                              child: (C {<echo>} {(DQ ($ Id.VSub_DollarName '$i') <' is ok'>)})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: (command.ControlFlow token:<Id.ControlFlow_Continue continue>)
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      ]
                    )
                    (C {<echo>} {<-e>} 
                      {(DQ <Id.Lit_Other '\\'> <'033[1;31m'>) 
                        (DQ <Id.Lit_Other '\\'> 
                          <
'n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   WARNING     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
                          > <Id.Lit_Other '\\'> <n>
                        ) (DQ <Id.Lit_Other '\\'> <'033[0m'>)
                      }
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$i'))} 
                                  {<Id.Lit_Equals '='>} {(DQ <'CONFIG_AUFS_FS=y'>)} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (C {<log_msg>} 
                              {(DQ <'For your kernel to boot AUFS as a built in is required:'>)}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:fs_msg)
                                  op: assign_op.Equal
                                  rhs: {(DQ <'File systems -> Miscellaneous filesystems -> AUFS'>)}
                                  spids: [2002]
                                )
                              ]
                            )
                          ]
                          spids: [1974 1992]
                        )
                      ]
                      else_action: [
                        (C {<log_msg>} {(DQ <'For NLS to work at boot some configs are required:'>)})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:fs_msg)
                              op: assign_op.Equal
                              rhs: {(DQ <'NLS Support'>)}
                              spids: [2018]
                            )
                          ]
                        )
                      ]
                    )
                    (C {<echo>} {(DQ ($ Id.VSub_DollarName '$i'))})
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.Pipeline
                          children: [
                            (C {<echo>} {(DQ ($ Id.VSub_DollarName '$i'))})
                            (C {<grep>} {<-q>} {(DQ <'CONFIG_NLS_CODEPAGE_850=y'>)})
                          ]
                          negated: F
                        )
                        (C {<echo>} {(DQ <'CONFIG_NLS_CODEPAGE_852=y'>)})
                      ]
                    )
                    (C {<log_msg>} 
                      {
                        (DQ <'Make sure you enable this when you are given the opportunity after\n'> 
                          <'\tthe kernel has downloaded and been patched.\n'> <"\tLook under ' "> ($ Id.VSub_DollarName '$fs_msg') <"'\n"> <'\t'>
                        )
                      }
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$AUTO'))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<echo>} {<-n>} {(DQ <'PRESS ENTER'>)})
                        (C {<read>} {<zzz>})
                      ]
                    )
                  ]
                )
            )
          ]
          spids: [1878 1890]
        )
      ]
    )
    (C {<echo>})
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$AUTO'))} 
          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>}
        )
        (C {<read>} {<-p>} {(DQ <'Press ENTER to begin'>)} {<dummy>})
      ]
    )
    (command.Simple
      words: [
        {<read>}
        {<-r>}
        {<kernel_series>}
        {<kernel_major_version>}
        {<kernel_minor_version>}
        {<kernel_minor_revision>}
      ]
      redirects: [
        (redir.Redir
          op: <Id.Redir_TLess '<<<'>
          fd: -1
          arg_word: {(DQ (${ Id.VSub_Name kernel_version))}
        )
      ]
      more_env: [(env_pair name:IFS val:{<.>} spids:[2146])]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:kernel_branch)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name kernel_major_version)}
          spids: [2176]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:kernel_major_version)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name kernel_series) <.> (${ Id.VSub_Name kernel_major_version)}
          spids: [2184]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aufs_version)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name kernel_series)}
          spids: [2196]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$kernel_minor_version'))} 
                  {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:kmv)
                  op: assign_op.Equal
                  rhs: {<.> (${ Id.VSub_Name kernel_minor_version)}
                  spids: [2219]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:kernel_tarball_version)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name kernel_version)}
                  spids: [2226]
                )
              ]
            )
          ]
          spids: [2204 2216]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:kmv)
              op: assign_op.Equal
              rhs: {(DQ <.0>)}
              spids: [2238]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:kernel_version)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name kernel_major_version) (${ Id.VSub_Name kmv)}
              spids: [2244]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:kernel_tarball_version)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name kernel_major_version)}
              spids: [2253]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:FIX_KERNEL_VER)
              op: assign_op.Equal
              rhs: {<yes>}
              spids: [2259]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$kernel_minor_revision'))} 
          {<Id.Lit_RBracket ']'>}
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:kmr)
              op: assign_op.Equal
              rhs: {<.> (${ Id.VSub_Name kernel_minor_revision)}
              spids: [2274]
            )
          ]
        )
      ]
    )
    (C {<log_msg>} 
      {
        (DQ <'Linux: '> (${ Id.VSub_Name kernel_major_version) (${ Id.VSub_Name kmv) 
          (${ Id.VSub_Name kmr)
        )
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {($ Id.VSub_DollarName '$aufsv')} 
                  {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:AUFS_BRANCHES)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (SQ 
                        <
'aufs3.0 aufs3.1 aufs3.11 aufs3.13 aufs3.15 aufs3.16 aufs3.17 aufs3.19 aufs3.3 aufs3.4 aufs3.5 aufs3.6 aufs3.7 aufs3.8 aufs3.9 aufs4.0 aufs4.2 aufs4.3 aufs4.4 aufs4.5 aufs4.6 aufs4.7 aufs4.8 aufs4.9 aufs4.10'
                        >
                      )
                    }
                  spids: [2315]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Subshell
                          command_list: 
                            (command.CommandList
                              children: [
                                (command.Pipeline
                                  children: [
                                    (C {<echo>} {(DQ ($ Id.VSub_DollarName '$AUFS_BRANCHES'))})
                                    (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)})
                                    (C {<grep>} {<-q>} 
                                      {
                                        (DQ <'^aufs'> (${ Id.VSub_Name kernel_major_version) 
                                          <Id.Lit_Other '$'>
                                        )
                                      }
                                    )
                                  ]
                                  negated: F
                                )
                              ]
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:aufsv)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name kernel_major_version)}
                          spids: [2364]
                        )
                      ]
                    )
                  ]
                  spids: [2321 2361]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name kernel_major_version))} 
                          {<Id.Lit_Equals '='>} {(DQ <3.2>)} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:aufsv)
                          op: assign_op.Equal
                          rhs: {(SQ <3.2>)}
                          spids: [2397]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<vercmp>} {(${ Id.VSub_Name kernel_version)} {<ge>} {<3.2.30>})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:aufsv)
                              op: assign_op.Equal
                              rhs: {(SQ <3.2.x>)}
                              spids: [2418]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [2374 2394]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name kernel_major_version))} 
                          {<Id.Lit_Equals '='>} {(DQ <3.10>)} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:aufsv)
                          op: assign_op.Equal
                          rhs: {(SQ <3.10>)}
                          spids: [2447]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<vercmp>} {(${ Id.VSub_Name kernel_version)} {<ge>} {<3.10.26>})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:aufsv)
                              op: assign_op.Equal
                              rhs: {(SQ <3.10.x>)}
                              spids: [2465]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [2424 2444]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name kernel_major_version))} 
                          {<Id.Lit_Equals '='>} {(DQ <3.12>)} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:aufsv)
                          op: assign_op.Equal
                          rhs: {(SQ <3.12>)}
                          spids: [2494]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<vercmp>} {(${ Id.VSub_Name kernel_version)} {<ge>} {<3.12.7>})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:aufsv)
                              op: assign_op.Equal
                              rhs: {(SQ <3.12.x>)}
                              spids: [2512]
                            )
                          ]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<vercmp>} {(${ Id.VSub_Name kernel_version)} {<ge>} {<3.12.31>})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:aufsv)
                              op: assign_op.Equal
                              rhs: {(SQ <'3.12.31+'>)}
                              spids: [2530]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [2471 2491]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name kernel_major_version))} 
                          {<Id.Lit_Equals '='>} {(DQ <3.14>)} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:aufsv)
                          op: assign_op.Equal
                          rhs: {(SQ <3.14>)}
                          spids: [2559]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<vercmp>} {(${ Id.VSub_Name kernel_version)} {<ge>} {<3.14.21>})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:aufsv)
                              op: assign_op.Equal
                              rhs: {(SQ <'3.14.21+'>)}
                              spids: [2577]
                            )
                          ]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<vercmp>} {(${ Id.VSub_Name kernel_version)} {<ge>} {<3.14.40>})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:aufsv)
                              op: assign_op.Equal
                              rhs: {(SQ <'3.14.40+'>)}
                              spids: [2595]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [2536 2556]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name kernel_major_version))} 
                          {<Id.Lit_Equals '='>} {(DQ <3.18>)} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:aufsv)
                          op: assign_op.Equal
                          rhs: {(SQ <3.18>)}
                          spids: [2624]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<vercmp>} {(${ Id.VSub_Name kernel_version)} {<ge>} {<3.18.1>})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:aufsv)
                              op: assign_op.Equal
                              rhs: {(SQ <'3.18.1+'>)}
                              spids: [2642]
                            )
                          ]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<vercmp>} {(${ Id.VSub_Name kernel_version)} {<ge>} {<3.18.25>})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:aufsv)
                              op: assign_op.Equal
                              rhs: {(SQ <'3.18.25+'>)}
                              spids: [2660]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [2601 2621]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name kernel_major_version))} 
                          {<Id.Lit_Equals '='>} {(DQ <4.1>)} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:aufsv)
                          op: assign_op.Equal
                          rhs: {(SQ <4.1>)}
                          spids: [2689]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<vercmp>} {(${ Id.VSub_Name kernel_version)} {<ge>} {<4.1.13>})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:aufsv)
                              op: assign_op.Equal
                              rhs: {(SQ <'4.1.13+'>)}
                              spids: [2707]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [2666 2686]
                )
              ]
            )
          ]
          spids: [2300 2312]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$aufsv')} {<Id.Lit_RBracket ']'>})
        (C {<exit_error>} {(DQ <"You must specify 'aufsv=version' in build.conf">)})
      ]
    )
    (C {<log_msg>} {(DQ <'aufs='> ($ Id.VSub_DollarName '$aufsv'))})
    (command.Case
      to_match: {($ Id.VSub_DollarName '$kernel_series')}
      arms: [
        (case_arm
          pat_list: [{<3>}]
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:ksubdir)
                      op: assign_op.Equal
                      rhs: {(${ Id.VSub_Name ksubdir_3)}
                      spids: [2753]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:aufs_git)
                      op: assign_op.Equal
                      rhs: {(${ Id.VSub_Name aufs_git_3)}
                      spids: [2760]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aufs_git_dir)
                  op: assign_op.Equal
                  rhs: {<aufs3_sources_git>}
                  spids: [2767]
                )
              ]
            )
          ]
          spids: [2750 2751 2770 -1]
        )
        (case_arm
          pat_list: [{<4>}]
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:ksubdir)
                      op: assign_op.Equal
                      rhs: {(${ Id.VSub_Name ksubdir_4)}
                      spids: [2776]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:aufs_git)
                      op: assign_op.Equal
                      rhs: {(${ Id.VSub_Name aufs_git_4)}
                      spids: [2783]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aufs_git_dir)
                  op: assign_op.Equal
                  rhs: {<aufs4_sources_git>}
                  spids: [2790]
                )
              ]
            )
          ]
          spids: [2773 2774 2793 -1]
        )
      ]
    )
    (C {<rm>} {<-rf>} 
      {<output/patches-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name HOST_ARCH)}
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {<sources/kernels>} {<Id.Lit_RBracket ']'>})
        (C {<mkdir>} {<-p>} {<sources/kernels>})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} 
          {<output/patches-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name HOST_ARCH)} {<Id.Lit_RBracket ']'>}
        )
        (C {<mkdir>} {<-p>} 
          {<output/patches-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name HOST_ARCH)}
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {<output>} {<Id.Lit_RBracket ']'>})
        (C {<mkdir>} {<-p>} {<output>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:today)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                command_list: 
                  (command.CommandList
                    children: [
                      (C {<date>} 
                        {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <d> <Id.Lit_Other '%'> <m> 
                          <Id.Lit_Other '%'> <y>
                        }
                      )
                    ]
                  )
              )
            }
          spids: [2886]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:testing)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [2915]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Pipeline
          children: [
            (C {<echo>} 
              {
                (braced_var_sub
                  token: <Id.VSub_Name kernel_version>
                  suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{<'*-'>})
                )
              }
            )
            (C {<grep>} {<-q>} {(DQ <rc>)})
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:testing)
              op: assign_op.Equal
              rhs: {</testing>}
              spids: [2937]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DOWNLOAD_KERNEL)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [2941]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-f>} 
          {<sources/kernels/linux-> (${ Id.VSub_Name kernel_tarball_version) <.tar.xz>} {<Id.Lit_RBracket ']'>}
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:DOWNLOAD_KERNEL)
              op: assign_op.Equal
              rhs: {<0>}
              spids: [2958]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {<-f>} 
                  {<sources/kernels/linux-> (${ Id.VSub_Name kernel_tarball_version) <.tar.xz.md5.txt>} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<cd>} {<sources/kernels>})
            (C {<md5sum>} {<-c>} {<linux-> (${ Id.VSub_Name kernel_tarball_version) <.tar.xz.md5.txt>})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<log_msg>} {(DQ <'md5sum FAILED: will resume kernel download...'>)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DOWNLOAD_KERNEL)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [3020]
                        )
                      ]
                    )
                  ]
                  spids: [2996 3010]
                )
              ]
            )
            (C {<cd>} {($ Id.VSub_DollarName '$MWD')})
          ]
          spids: [2961 2977]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:DOWNLOAD_KERNEL)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [3034]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$DOWNLOAD_KERNEL')} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:KERROR)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [3057]
                )
              ]
            )
            (command.ForEach
              iter_name: kernel_mirror
              iter_words: [{($ Id.VSub_DollarName '$kernel_mirrors')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:kernel_mirror)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name kernel_mirror) </> (${ Id.VSub_Name ksubdir)}
                          spids: [3074]
                        )
                      ]
                    )
                    (C {<log_msg>} 
                      {
                        (DQ <'Downloading: '> (${ Id.VSub_Name kernel_mirror) (${ Id.VSub_Name testing) 
                          </linux-> (${ Id.VSub_Name kernel_tarball_version) <.tar.xz>
                        )
                      }
                    )
                    (command.Simple
                      words: [
                        {<wget>}
                        {(${ Id.VSub_Name WGET_OPT)}
                        {<-c>}
                        {<-P>}
                        {<sources/kernels>}
                        {(${ Id.VSub_Name kernel_mirror) (${ Id.VSub_Name testing) </linux-> 
                          (${ Id.VSub_Name kernel_tarball_version) <.tar.xz>
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: <Id.Redir_DGreat '>>'>
                          fd: -1
                          arg_word: {(${ Id.VSub_Name BUILD_LOG)}
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [(C {<echo>} {(DQ <Error>)})]
                          spids: [3133 3147]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:KERROR)
                              op: assign_op.Equal
                              rhs: (word.Empty)
                              spids: [3160]
                            )
                          ]
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Break break>
                        )
                      ]
                    )
                  ]
                )
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$KERROR')} {<Id.Lit_RBracket ']'>})
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
            )
            (C {<cd>} {<sources/kernels>})
            (command.Simple
              words: [{<md5sum>} {<linux-> (${ Id.VSub_Name kernel_tarball_version) <.tar.xz>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {<linux-> (${ Id.VSub_Name kernel_tarball_version) <.tar.xz.md5.txt>}
                )
              ]
            )
            (command.Simple
              words: [{<sha256sum>} {<linux-> (${ Id.VSub_Name kernel_tarball_version) <.tar.xz>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {<linux-> (${ Id.VSub_Name kernel_tarball_version) <.tar.xz.sha256.txt>}
                )
              ]
            )
            (C {<cd>} {($ Id.VSub_DollarName '$MWD')})
          ]
          spids: [3040 3054]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$LIBRE')} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:minor_version)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name kernel_version>
                        suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{<'*.'>})
                      )
                    }
                  spids: [3251]
                )
              ]
            )
            (command.ForEach
              iter_name: i
              iter_words: [{<deblob-> (${ Id.VSub_Name kernel_major_version)} {<deblob-check>}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} 
                                  {<sources/kernels/> ($ Id.VSub_DollarName '$i')} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (C {<wget>} {(${ Id.VSub_Name WGET_OPT)} {<-O>} 
                              {<sources/kernels/> ($ Id.VSub_DollarName '$i')} 
                              {<http> <Id.Lit_Other ':'> 
                                <//linux-libre.fsfla.org/pub/linux-libre/releases/LATEST-> (${ Id.VSub_Name kernel_major_version) <.N/> ($ Id.VSub_DollarName '$i')
                              }
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                                (C {<exit_error>} 
                                  {
                                    (DQ <'Error: failed to download '> ($ Id.VSub_DollarName '$i') <.>)
                                  }
                                )
                              ]
                            )
                          ]
                          spids: [3276 3291]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
          spids: [3234 3248]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} 
                  {</tmp/> (${ Id.VSub_Name aufs_git_dir) <_done>} {<-o>} {<Id.KW_Bang '!'>} {<-d>} {<sources/> (${ Id.VSub_Name aufs_git_dir) </.git>} 
                  {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<cd>} {<sources>})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} 
                          {(${ Id.VSub_Name aufs_git_dir) </.git>} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<git>} {<clone>} {(${ Id.VSub_Name aufs_git)} {(${ Id.VSub_Name aufs_git_dir)})
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<exit_error>} {(DQ <'Error: failed to download the Aufs sources.'>)})
                      ]
                    )
                    (C {<touch>} {</tmp/> (${ Id.VSub_Name aufs_git_dir) <_done>})
                  ]
                  spids: [3385 3402]
                )
              ]
              else_action: [
                (C {<cd>} {(${ Id.VSub_Name aufs_git_dir)})
                (C {<git>} {<pull>} {<--all>})
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                      action: [
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (C {<log_msg>} {(DQ <"WARNING: 'git pull --all' command failed">)})
                            (C {<sleep>} {<5>})
                          ]
                        )
                      ]
                      spids: [3463 3477]
                    )
                  ]
                  else_action: [(C {<touch>} {</tmp/> (${ Id.VSub_Name aufs_git_dir) <_done>})]
                )
              ]
            )
            (C {<cd>} {($ Id.VSub_DollarName '$MWD')})
          ]
          spids: [3347 3377]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {</tmp/aufs-util_done>} {<-o>} 
                  {<Id.KW_Bang '!'>} {<-d>} {<sources/aufs-util_git/.git>} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<cd>} {<sources>})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {<aufs-util_git/.git>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<log_msg>} {(DQ <'Downloading aufs-utils for userspace'>)})
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<git>} {<clone>} 
                          {<git> <Id.Lit_Other ':'> <//git.code.sf.net/p/aufs/aufs-util.git>} {<aufs-util_git>}
                        )
                        (command.Simple
                          words: [
                            {<git>}
                            {<clone>}
                            {<https> <Id.Lit_Other ':'> <//git.code.sf.net/p/aufs/aufs-util>}
                            {<aufs-util_git>}
                          ]
                          more_env: [(env_pair name:GIT_SSL_NO_VERIFY val:{<true>} spids:[3589])]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<exit_error>} {(DQ <'Error: failed to download the Aufs utils...'>)})
                      ]
                    )
                    (C {<touch>} {</tmp/aufs-util_done>})
                  ]
                  spids: [3551 3565]
                )
              ]
              else_action: [
                (C {<cd>} {<aufs-util_git>})
                (C {<git>} {<pull>} {<--all>})
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                      action: [
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (C {<log_msg>} {(DQ <"WARNING: 'git pull --all' command failed">)})
                            (C {<sleep>} {<5>})
                          ]
                        )
                      ]
                      spids: [3642 3656]
                    )
                  ]
                  else_action: [(C {<touch>} {</tmp/aufs-util_done>})]
                )
              ]
            )
            (C {<cd>} {($ Id.VSub_DollarName '$MWD')})
          ]
          spids: [3521 3543]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$FW_PKG_URL'))} 
                  {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fw_pkg)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name FW_PKG_URL>
                        suffix_op: 
                          (suffix_op.Unary
                            op_id: Id.VOp1_DPound
                            arg_word: {<'*'> <Id.Lit_Slash />}
                          )
                      )
                    }
                  spids: [3711]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:FDRV)
                  op: assign_op.Equal
                  rhs: 
                    {<fdrv.sfs-> (${ Id.VSub_Name kernel_version) <-> 
                      (${ Id.VSub_Name package_name_suffix)
                    }
                  spids: [3723]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} 
                          {<sources/> (${ Id.VSub_Name fw_pkg)} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} 
                                  {(DQ ($ Id.VSub_DollarName '$FW_PKG_URL'))} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (C {<log_msg>} {(DQ <'Downloading '> ($ Id.VSub_DollarName '$FW_PKG_URL'))})
                            (C {<wget>} {(${ Id.VSub_Name WGET_OPT)} {<-c>} 
                              {(${ Id.VSub_Name FW_PKG_URL)} {<-P>} {<sources>}
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                                (C {<exit_error>} 
                                  {(DQ <'failed to download '> (${ Id.VSub_Name fw_pkg))}
                                )
                              ]
                            )
                          ]
                          spids: [3754 3770]
                        )
                      ]
                    )
                  ]
                  spids: [3734 3751]
                )
              ]
            )
          ]
          spids: [3696 3708]
        )
      ]
      else_action: [
        (C {<echo>})
        (C {<log_msg>} {(DQ <'-- Pausing'>)})
        (C {<log_msg>} {(DQ <'Extra firmware to be added after compiling the kernel'>)})
        (C {<echo>} {(DQ <'Choose an option (generating list...):'>)})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:tmpfw)
              op: assign_op.Equal
              rhs: {</tmp/fw> ($ Id.VSub_Dollar '$$')}
              spids: [3863]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:x)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [3868]
            )
          ]
        )
        (command.Pipeline
          children: [
            (C {<wget>} {<-q>} {(${ Id.VSub_Name FW_URL)} {<-O>} {<->})
            (C {<sed>} {(SQ <'/href/!d; /\\.tar\\./!d; /md5\\.txt/d; s/.*href="//; s/".*//'>)})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: [(command.Sentence child:(C {<read>} {<f>}) terminator:<Id.Op_Semi _>)]
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$f'))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (command.Simple
                          words: [
                            {<echo>}
                            {(DQ ($ Id.VSub_DollarName '$x') <' '> ($ Id.VSub_DollarName '$f'))}
                          ]
                          redirects: [
                            (redir.Redir
                              op: <Id.Redir_DGreat '>>'>
                              fd: -1
                              arg_word: {(${ Id.VSub_Name tmpfw)}
                            )
                          ]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:x)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$x')})
                                    right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                                  )
                              )
                            }
                          spids: [3932]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:y)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: <Id.Left_Backtick '`'>
                    command_list: 
                      (command.CommandList
                        children: [
                          (command.Pipeline
                            children: [(C {<cat>} {(${ Id.VSub_Name tmpfw)}) (C {<wc>} {<-l>})]
                            negated: F
                          )
                        ]
                      )
                  )
                }
              spids: [3947]
            )
          ]
        )
        (command.AndOr
          ops: [Id.Op_DAmp]
          children: [
            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$y'))} {<Id.Lit_Equals '='>} {<0>} 
              {<Id.Lit_RBracket ']'>}
            )
            (C {<echo>} {(DQ <'WARNING: no firmware at that URL'>)})
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:x)
              op: assign_op.Equal
              rhs: 
                {
                  (word_part.ArithSub
                    anode: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Plus
                        left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$x')})
                        right: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$y')})
                      )
                  )
                }
              spids: [3990]
            )
          ]
        )
        (command.Simple
          words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$x') <" I'll copy in my own.">)}]
          redirects: [(redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{(${ Id.VSub_Name tmpfw)})]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:x)
              op: assign_op.Equal
              rhs: 
                {
                  (word_part.ArithSub
                    anode: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Plus
                        left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$x')})
                        right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                      )
                  )
                }
              spids: [4015]
            )
          ]
        )
        (command.Simple
          words: [
            {<echo>}
            {
              (DQ ($ Id.VSub_DollarName '$x') 
                <" I'll grab the latest firmware from kernel.org. (slow)">
              )
            }
          ]
          redirects: [(redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{(${ Id.VSub_Name tmpfw)})]
        )
        (C {<cat>} {(${ Id.VSub_Name tmpfw)})
        (C {<echo>} {<-n>} {(DQ <'Enter a number, 1 to '> ($ Id.VSub_DollarName '$x') <':  '>)})
        (C {<read>} {<fw>})
        (command.Case
          to_match: {($ Id.VSub_DollarName '$fw')}
          arms: [
            (case_arm
              pat_list: [{<Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>}]
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:ok)
                      op: assign_op.Equal
                      rhs: {<1>}
                      spids: [4076]
                    )
                  ]
                )
              ]
              spids: [4070 4074 4079 -1]
            )
            (case_arm
              pat_list: [{<Id.Lit_Star '*'>}]
              action: [
                (C {<log_msg>} 
                  {
                    (DQ <'invalid option... falling back to option '> 
                      (word_part.ArithSub
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Minus
                            left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$x')})
                            right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                          )
                      )
                    )
                  }
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:fw)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (word_part.ArithSub
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Minus
                                left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$x')})
                                right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                              )
                          )
                        }
                      spids: [4100]
                    )
                  ]
                )
              ]
              spids: [4082 4083 4111 -1]
            )
          ]
        )
        (C {<echo>})
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$fw'))} {<-gt>} 
                      {(DQ ($ Id.VSub_DollarName '$x'))} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              action: [(C {<exit_error>} {(DQ <'error, wrong number'>)})]
              spids: [4124 4142]
            )
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$fw'))} {<Id.Lit_Equals '='>} 
                      {
                        (DQ 
                          (word_part.ArithSub
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Minus
                                left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$x')})
                                right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                              )
                          )
                        )
                      } {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:FIRMWARE_OPT)
                      op: assign_op.Equal
                      rhs: {<manual>}
                      spids: [4180]
                    )
                  ]
                )
                (C {<log_msg>} {(DQ <'you will manually add firmware after the kernel is compiled'>)})
                (C {<sleep>} {<6>})
              ]
              spids: [4152 4177]
            )
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$fw'))} {<Id.Lit_Equals '='>} 
                      {(DQ ($ Id.VSub_DollarName '$x'))} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:FIRMWARE_OPT)
                      op: assign_op.Equal
                      rhs: {<git>}
                      spids: [4217]
                    )
                  ]
                )
                (C {<echo>} {(DQ <'You have chosen to get the latest firmware from kernel.org'>)})
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-e>} {<../linux-firmware>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                      action: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-d>} {<../linux-firmware>} {<-a>} 
                                      {<Id.KW_Bang '!'>} {<-h>} {<../linux-firmware>} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                              action: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-e>} 
                                              {<../../local-repositories>} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                      action: [
                                        (C {<echo>} {(DQ <'  wait while we move the repository...'>)})
                                        (C {<mv>} {<-f>} {<../linux-firmware>} 
                                          {<../../local-repositories>}
                                        )
                                        (command.Subshell
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (command.Sentence
                                                  child: (C {<cd>} {<..>})
                                                  terminator: <Id.Op_Semi _>
                                                )
                                                (C {<ln>} {<-snf>} 
                                                  {<../local-repositories/linux-firmware>} {<.>}
                                                )
                                              ]
                                            )
                                        )
                                        (C {<echo>} {(DQ <'  repo moved!'>)})
                                      ]
                                      spids: [4274 4284]
                                    )
                                  ]
                                )
                              ]
                              spids: [4250 4268]
                            )
                          ]
                        )
                        (C {<cd>} {<../linux-firmware>})
                        (C {<echo>} {(DQ <'Updating the git firmware repo'>)})
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {<git>} {<pull>})
                            (C {<log_msg>} {(DQ <"Warning: 'git pull' failed">)})
                          ]
                        )
                      ]
                      spids: [4232 4244]
                    )
                  ]
                  else_action: [
                    (C {<log_msg>} 
                      {(DQ <'This may take a long time as the firmware repository is around 180MB'>)}
                    )
                    (C {<cd>} {<..>})
                    (C {<git>} {<clone>} 
                      {<git> <Id.Lit_Other ':'> 
                        <//git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git>
                      }
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
                      ]
                    )
                  ]
                )
                (C {<cd>} {($ Id.VSub_DollarName '$CWD')})
              ]
              spids: [4196 4214]
            )
          ]
          else_action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:FIRMWARE_OPT)
                  op: assign_op.Equal
                  rhs: {<tarball>}
                  spids: [4410]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fw_pkg)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {<grep>} {<Id.Lit_Other '^'> ($ Id.VSub_DollarName '$fw')} 
                                {(${ Id.VSub_Name tmpfw)}
                              )
                            ]
                          )
                      )
                    }
                  spids: [4414]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fw_pkg)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name fw_pkg>
                        suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{<'* '>})
                      )
                    }
                  spids: [4429]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-f>} {<sources/> (${ Id.VSub_Name fw_pkg)} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<log_msg>} {(DQ <'Verifying sources/'> (${ Id.VSub_Name fw_pkg))})
                    (command.Simple
                      words: [{<tar>} {<-taf>} {<sources/> (${ Id.VSub_Name fw_pkg)}]
                      redirects: [
                        (redir.Redir
                          op: <Id.Redir_AndGreat '&>'>
                          fd: -1
                          arg_word: {</dev/null>}
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<exit_error>} 
                          {
                            (DQ <'failed verify '> 
                              (braced_var_sub
                                token: <Id.VSub_Name fw_pkg>
                                suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{<'* '>})
                              )
                            )
                          }
                        )
                      ]
                    )
                  ]
                  spids: [4437 4452]
                )
              ]
              else_action: [
                (C {<log_msg>} 
                  {
                    (DQ <'You chose '> (${ Id.VSub_Name fw_pkg) 
                      <". If that isn't correct change it manually later.">
                    )
                  }
                )
                (C {<log_msg>} 
                  {(DQ <'downloading '> (${ Id.VSub_Name FW_URL) </> (${ Id.VSub_Name fw_pkg))}
                )
                (C {<wget>} {(${ Id.VSub_Name WGET_OPT)} {<-c>} 
                  {(${ Id.VSub_Name FW_URL) </> (${ Id.VSub_Name fw_pkg)} {<-P>} {<sources>}
                )
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                    (C {<exit_error>} 
                      {
                        (DQ <'failed to download '> 
                          (braced_var_sub
                            token: <Id.VSub_Name fw_pkg>
                            suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{<'* '>})
                          )
                        )
                      }
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:FW_PKG_URL)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name fw_pkg)}
                  spids: [4578]
                )
              ]
            )
          ]
        )
      ]
    )
    (C {<log_msg>} {(DQ <'Extracting the Aufs-util sources'>)})
    (C {<rm>} {<-rf>} {<aufs-util>})
    (C {<cp>} {<-a>} {<sources/aufs-util_git>} {<aufs-util>})
    (command.Subshell
      command_list: 
        (command.CommandList
          children: [
            (C {<cd>} {<aufs-util>})
            (command.Pipeline
              children: [
                (C {<git>} {<branch>} {<-a>})
                (C {<grep>} {(DQ <aufs> ($ Id.VSub_DollarName '$kernel_series'))})
                (C {<grep>} {<-v>} {<-E>} {(SQ <'rcN|\\)'>)})
                (C {<cut>} {<-d>} {(SQ <.>)} {<-f2>})
                (command.Simple
                  words: [{<sort>} {<-n>}]
                  redirects: [
                    (redir.Redir
                      op: <Id.Redir_Great '>'>
                      fd: -1
                      arg_word: {</tmp/aufs-util-version>}
                    )
                  ]
                )
              ]
              negated: F
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: [(command.Sentence child:(C {<read>} {<line>}) terminator:<Id.Op_Semi _>)]
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$line'))} {<-le>} 
                                  {(DQ ($ Id.VSub_DollarName '$kernel_branch'))} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:branch)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$line')}
                                  spids: [4721]
                                )
                              ]
                            )
                          ]
                          spids: [4697 4715]
                        )
                      ]
                      else_action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                    )
                  ]
                )
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Less '<'>
                  fd: -1
                  arg_word: {</tmp/aufs-util-version>}
                )
              ]
            )
            (C {<git>} {<checkout>} 
              {<aufs> (${ Id.VSub_Name kernel_series) <.> (${ Id.VSub_Name branch)}
            )
            (C {<cp>} {<Makefile>} {<Makefile-orig>})
            (C {<sed>} {<-i>} {<-e>} {(SQ <'s/-static //'>)} {<-e>} {(SQ <'s|ver_test ||'>)} {<-e>} 
              {(SQ <'s|BuildFHSM = .*||'>)} {<Makefile>}
            )
            (command.Simple
              words: [{<diff>} {<-ru>} {<Makefile-orig>} {<Makefile>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: 
                    {<../output/patches-> (${ Id.VSub_Name kernel_version) <-> 
                      (${ Id.VSub_Name HOST_ARCH) </aufs-util.patch>
                    }
                )
              ]
            )
          ]
        )
    )
    (C {<log_msg>} {(DQ <'Extracting the Aufs sources'>)})
    (C {<rm>} {<-rf>} {<aufs_sources>})
    (C {<cp>} {<-a>} {<sources/> (${ Id.VSub_Name aufs_git_dir)} {<aufs_sources>})
    (command.Subshell
      command_list: 
        (command.CommandList
          children: [
            (command.Sentence child:(C {<cd>} {<aufs_sources>}) terminator:<Id.Op_Semi _>)
            (C {<git>} {<checkout>} {<aufs> (${ Id.VSub_Name aufsv)})
            (C {<../patches/aufs_sources/apply>} {(${ Id.VSub_Name kernel_version)})
          ]
        )
    )
    (C {<log_msg>} {(DQ <'Extracting the kernel sources'>)})
    (command.Simple
      words: [
        {<tar>}
        {<-axf>}
        {<sources/kernels/linux-> (${ Id.VSub_Name kernel_tarball_version) <.tar.xz>}
      ]
      redirects: [
        (redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{(${ Id.VSub_Name BUILD_LOG)})
        (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<rm>} {<-f>} 
              {<sources/kernels/linux-> (${ Id.VSub_Name kernel_tarball_version) <.tar.xz>}
            )
            (C {<exit_error>} {(DQ <'ERROR extracting kernel sources. file was deleted...'>)})
          ]
          spids: [4896 4910]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$FIX_KERNEL_VER'))} 
                  {<Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<rm>} {<-rf>} {<linux-> (${ Id.VSub_Name kernel_version)})
            (C {<mv>} {<-f>} {<linux-> (${ Id.VSub_Name kernel_tarball_version)} 
              {<linux-> (${ Id.VSub_Name kernel_version)}
            )
          ]
          spids: [4933 4951]
        )
      ]
    )
    (C {<cd>} {<linux-> (${ Id.VSub_Name kernel_version)})
    (C {<log_msg>} {(DQ <'Adding Aufs to the kernel sources'>)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<Id.Lit_LBracket '['>} {<-f>} {<mm/prfile.c>} {<Id.Lit_RBracket ']'>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:mmap)
                  op: assign_op.Equal
                  rhs: {<../aufs_sources/aufs> (${ Id.VSub_Name aufs_version) <-mmap.patch>}
                  spids: [5019]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-f>} {($ Id.VSub_DollarName '$mmap')} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<grep>} {<-q>} {(SQ <mm/prfile.c>)} {($ Id.VSub_DollarName '$mmap')})
                (C {<rm>} {<-f>} {<mm/prfile.c>})
              ]
            )
          ]
          spids: [5004 5016]
        )
      ]
    )
    (command.ForEach
      iter_name: i
      iter_words: [{<kbuild>} {<base>} {<standalone>} {<mmap>}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:patchfile)
                  op: assign_op.Equal
                  rhs: 
                    {<../aufs_sources/aufs> (${ Id.VSub_Name aufs_version) <-> 
                      ($ Id.VSub_DollarName '$i') <.patch>
                    }
                  spids: [5081]
                )
              ]
            )
            (command.Subshell
              command_list: 
                (command.CommandList
                  children: [
                    (command.Sentence
                      child: (C {<echo>})
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<echo>} 
                      {
                        (DQ <'patch -N -p1 < '> 
                          (braced_var_sub
                            token: <Id.VSub_Name patchfile>
                            suffix_op: 
                              (suffix_op.Unary
                                op_id: Id.VOp1_DPound
                                arg_word: {<'*'> <Id.Lit_Slash />}
                              )
                          )
                        )
                      }
                    )
                  ]
                )
              redirects: [
                (redir.Redir
                  op: <Id.Redir_AndDGreat '&>>'>
                  fd: -1
                  arg_word: {(${ Id.VSub_Name BUILD_LOG)}
                )
              ]
            )
            (command.Simple
              words: [{<patch>} {<-N>} {<-p1>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Less '<'>
                  fd: -1
                  arg_word: {(${ Id.VSub_Name patchfile)}
                )
                (redir.Redir
                  op: <Id.Redir_AndDGreat '&>>'>
                  fd: -1
                  arg_word: {(${ Id.VSub_Name BUILD_LOG)}
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<log_msg>} 
                      {(DQ <'WARNING: failed to add some Aufs patches to the kernel sources.'>)}
                    )
                    (C {<log_msg>} 
                      {(DQ <'Check it manually and either CRTL+C to bail or hit enter to go on'>)}
                    )
                    (C {<read>} {<goon>})
                  ]
                  spids: [5137 5151]
                )
              ]
            )
          ]
        )
    )
    (C {<cp>} {<-r>} 
      (word.BracedTree
        parts: [<../aufs_sources/> (word_part.BracedTuple words:[{<fs>} {<Documentation>}])]
      ) {<.>}
    )
    (command.Simple
      words: [{<cp>} {<../aufs_sources/include/linux/aufs_type.h>} {<include/linux>}]
      redirects: [(redir.Redir op:<Id.Redir_Great '2>'> fd:2 arg_word:{</dev/null>})]
    )
    (command.Simple
      words: [{<cp>} {<../aufs_sources/include/uapi/linux/aufs_type.h>} {<include/linux>}]
      redirects: [(redir.Redir op:<Id.Redir_Great '2>'> fd:2 arg_word:{</dev/null>})]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-d>} {<../aufs_sources/include/uapi>} {<Id.Lit_RBracket ']'>})
        (C {<cp>} {<-r>} {<../aufs_sources/include/uapi/linux/aufs_type.h>} {<include/uapi/linux>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$LIBRE')} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<cd>} {<..>})
            (C {<cp>} {<-r>} {<linux-> (${ Id.VSub_Name kernel_version)} 
              {<linux-> (${ Id.VSub_Name kernel_version) <-orig>}
            )
            (C {<cd>} {<linux-> (${ Id.VSub_Name kernel_version)})
            (command.Pipeline
              children: [
                (command.Simple
                  words: [{<sh>} {<../sources/kernels/deblob-> (${ Id.VSub_Name kernel_major_version)}]
                  redirects: [(redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})]
                )
                (C {<tee>} {<-a>} {(${ Id.VSub_Name BUILD_LOG)})
              ]
              negated: F
            )
            (C {<cd>} {<..>})
            (command.Simple
              words: [
                {<diff>}
                {<-rupN>}
                {<linux-> (${ Id.VSub_Name kernel_version) <-orig>}
                {<linux-> (${ Id.VSub_Name kernel_version)}
              ]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: 
                    {<output/patches-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name HOST_ARCH) 
                      </deblob.patch>
                    }
                )
              ]
            )
            (C {<rm>} {<-rf>} {<linux-> (${ Id.VSub_Name kernel_version) <-orig>})
            (C {<cd>} {<linux-> (${ Id.VSub_Name kernel_version)})
          ]
          spids: [5234 5248]
        )
      ]
    )
    (C {<cp>} {<Makefile>} {<Makefile-orig>})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$remove_sublevel'))} 
                  {<Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<log_msg>} {(DQ <'Resetting the minor version number'>)})
            (C {<sed>} {<-i>} {(DQ <'s/^SUBLEVEL =.*/SUBLEVEL = 0/'>)} {<Makefile>})
          ]
          spids: [5364 5382]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ (${ Id.VSub_Name custom_suffix))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$LIBRE')} {<-eq>} {<1>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<sed>} {<-i>} 
              {(DQ <'s/^EXTRAVERSION =.*/EXTRAVERSION = '> (${ Id.VSub_Name custom_suffix) </>)} {<Makefile>}
            )
          ]
          spids: [5410 5438]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<diff>} {<-up>} {<Makefile-orig>} {<Makefile>})
        (command.Simple
          words: [{<diff>} {<-up>} {<Makefile-orig>} {<Makefile>}]
          redirects: [
            (redir.Redir
              op: <Id.Redir_Great '>'>
              fd: -1
              arg_word: 
                {<../output/patches-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name HOST_ARCH) 
                  </version.patch>
                }
            )
          ]
        )
      ]
    )
    (C {<rm>} {<Makefile-orig>})
    (C {<log_msg>} {(DQ <'Reducing the number of consoles and verbosity level'>)})
    (command.ForEach
      iter_name: i
      iter_words: [{<include/linux/printk.h>} {<kernel/printk/printk.c>} {<kernel/printk.c>}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {(DQ ($ Id.VSub_DollarName '$i'))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow token:<Id.ControlFlow_Continue continue>)
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:z)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {<echo>} {(DQ ($ Id.VSub_DollarName '$i'))})
                                  (C {<sed>} {(SQ <'s|/|_|g'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [5530]
                )
              ]
            )
            (C {<cp>} {(${ Id.VSub_Name i)} {(${ Id.VSub_Name i) <.orig>})
            (C {<sed>} {<-i>} 
              {(SQ <'s|#define CONSOLE_LOGLEVEL_DEFAULT .*|#define CONSOLE_LOGLEVEL_DEFAULT 3|'>)} {($ Id.VSub_DollarName '$i')}
            )
            (C {<sed>} {<-i>} 
              {(SQ <'s|#define DEFAULT_CONSOLE_LOGLEVEL .*|#define DEFAULT_CONSOLE_LOGLEVEL 3|'>)} {($ Id.VSub_DollarName '$i')}
            )
            (C {<sed>} {<-i>} {(SQ <'s|#define MAX_CMDLINECONSOLES .*|#define MAX_CMDLINECONSOLES 5|'>)} 
              {($ Id.VSub_DollarName '$i')}
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [{<diff>} {<-q>} {(${ Id.VSub_Name i) <.orig>} {(${ Id.VSub_Name i)}]
                  redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
                )
                (command.Simple
                  words: [{<diff>} {<-up>} {(${ Id.VSub_Name i) <.orig>} {(${ Id.VSub_Name i)}]
                  redirects: [
                    (redir.Redir
                      op: <Id.Redir_Great '>'>
                      fd: -1
                      arg_word: 
                        {<../output/patches-> (${ Id.VSub_Name kernel_version) <-> 
                          (${ Id.VSub_Name HOST_ARCH) </> (${ Id.VSub_Name z) <.patch>
                        }
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ForEach
      iter_name: patch
      iter_words: [
        {<../patches/> <Id.Lit_Star '*'> <.patch>}
        {<../patches/> (${ Id.VSub_Name kernel_major_version) </> <Id.Lit_Star '*'> <.patch>}
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} 
                  {(DQ ($ Id.VSub_DollarName '$patch'))} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow token:<Id.ControlFlow_Continue continue>)
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {<vercmp>} {(${ Id.VSub_Name kernel_version)} {<ge>} {<4.14>})
                (C {<Id.Lit_LBracket '['>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [(C {<basename>} {(DQ ($ Id.VSub_DollarName '$patch'))})]
                          )
                      )
                    )
                  } {<Id.Lit_Equals '='>} {(DQ <commoncap-symbol.patch>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow token:<Id.ControlFlow_Continue continue>)
              ]
            )
            (C {<log_msg>} {(DQ <'Applying '> ($ Id.VSub_DollarName '$patch'))})
            (command.Simple
              words: [{<patch>} {<-p1>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Less '<'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$patch')}
                )
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {(${ Id.VSub_Name BUILD_LOG)}
                )
                (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>})
                (C {<exit_error>} 
                  {
                    (DQ <'Error: failed to apply '> ($ Id.VSub_DollarName '$patch') 
                      <' on the kernel sources.'>
                    )
                  }
                )
              ]
            )
            (C {<cp>} {($ Id.VSub_DollarName '$patch')} 
              {<../output/patches-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name HOST_ARCH)}
            )
          ]
        )
    )
    (C {<log_msg>} {(DQ <'Cleaning the kernel sources'>)})
    (C {<make>} {<clean>})
    (C {<make>} {<mrproper>})
    (C {<find>} {<.>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\('>)} {<-name>} 
      {(SQ <'*.orig'>)} {<-o>} {<-name>} {(SQ <'*.rej'>)} {<-o>} {<-name>} {(SQ <'*~'>)} 
      {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'>)} {<-delete>}
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<Id.Lit_LBracket '['>} {<-f>} {<../DOTconfig>} {<Id.Lit_RBracket ']'>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<cp>} {<../DOTconfig>} {<.config>})
            (C {<sed>} {<-i>} {(SQ <'/^kernel_version/d'>)} {<.config>})
          ]
          spids: [5833 5845]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<Id.Lit_LBracket '['>} {<-f>} {<fs/aufs/Kconfig>} {<Id.Lit_RBracket ']'>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<sed>} {<-i>} {(SQ <'s%support"$%support"\\n\\tdefault y%'>)} {<fs/aufs/Kconfig>})
            (C {<sed>} {<-i>} {(SQ <'s%aufs branch"%aufs branch"\\n\\tdefault n%'>)} {<fs/aufs/Kconfig>})
          ]
          spids: [5871 5883]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Pipeline
                  children: [(C {<grep>} {<-q>} {(DQ <'CONFIG_AUFS_FS=y'>)} {<.config>})]
                  negated: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {<-e>} {(DQ <Id.Lit_Other '\\'> <'033[1;31m'>)})
            (C {<log_msg>} {(DQ <'For your kernel to boot AUFS as a built in is required:'>)})
            (C {<log_msg>} {(DQ <'File systems -> Miscellaneous filesystems -> AUFS'>)})
            (C {<echo>} {<-e>} {(DQ <Id.Lit_Other '\\'> <'033[0m'>)})
          ]
          spids: [5909 5925]
        )
      ]
    )
    (C {<i386_specific_stuff>})
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-f>} {<.config>} {<-a>} {<Id.KW_Bang '!'>} {<-f>} {<../DOTconfig>} 
          {<Id.Lit_RBracket ']'>}
        )
        (C {<cp>} {<.config>} {<../DOTconfig>})
      ]
    )
    (command.ShFunction
      name: do_kernel_config
      body: 
        (command.BraceGroup
          children: [
            (C {<log_msg>} {(DQ <'make '> ($ Id.VSub_Number '$1'))})
            (C {<make>} {($ Id.VSub_Number '$1')})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {<-f>} {<.config>} {<-a>} 
                                  {(DQ ($ Id.VSub_DollarName '$AUTO'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (C {<log_msg>} 
                              {
                                (DQ <Id.Lit_Other '\\'> 
                                  <
'nOk, kernel is configured. hit ENTER to continue, CTRL+C to quit'
                                  >
                                )
                              }
                            )
                            (C {<read>} {<goon>})
                          ]
                          spids: [6053 6078]
                        )
                      ]
                    )
                  ]
                  spids: [6036 6050]
                )
              ]
              else_action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$AUTO'))} {<Id.Lit_Equals '='>} 
                  {(DQ <yes>)} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [(C {<do_kernel_config>} {<oldconfig>})]
          spids: [6110 6128]
        )
      ]
      else_action: [
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: (C {<Id.Lit_LBracket '['>} {<-f>} {<.config>} {<Id.Lit_RBracket ']'>})
                  terminator: <Id.Op_Semi _>
                )
              ]
              action: [
                (C {<echo>} {<-en>} 
                  {
                    (DQ <'\n'> <'You now should configure your kernel. The supplied .config\n'> 
                      <'should be already configured but you may want to make changes, plus\n'> <'the date should be updated.'>
                    )
                  }
                )
              ]
              spids: [6138 6150]
            )
          ]
          else_action: [
            (C {<echo>} {<-en>} {(DQ <Id.Lit_Other '\\'> <'nYou must now configure the kernel'>)})
          ]
        )
        (command.Sentence
          child: 
            (C {<echo>} {<-en>} 
              {
                (DQ <'\n'> <'Hit a number or s to skip:\n'> 
                  <'1. make menuconfig [default] (ncurses based)\n'> <'2. make gconfig (gtk based gui)\n'> <'3. make xconfig (qt based gui)\n'> <'4. make oldconfig\n'> 
                  <'s. skip\n'> <'\n'> <'Enter option: '>
                )
              }
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<read>} {<kernelconfig>})
        (command.Case
          to_match: {($ Id.VSub_DollarName '$kernelconfig')}
          arms: [
            (case_arm
              pat_list: [{<1>}]
              action: [(C {<do_kernel_config>} {<menuconfig>})]
              spids: [6212 6213 6219 -1]
            )
            (case_arm
              pat_list: [{<2>}]
              action: [(C {<do_kernel_config>} {<gconfig>})]
              spids: [6222 6223 6229 -1]
            )
            (case_arm
              pat_list: [{<3>}]
              action: [(C {<do_kernel_config>} {<xconfig>})]
              spids: [6232 6233 6239 -1]
            )
            (case_arm
              pat_list: [{<4>}]
              action: [(C {<do_kernel_config>} {<oldconfig>})]
              spids: [6242 6243 6249 -1]
            )
            (case_arm
              pat_list: [{<s>}]
              action: [
                (C {<log_msg>} {(DQ <'skipping configuration of kernel'>)})
                (C {<echo>} {(DQ <'hit ENTER to continue, CTRL+C to quit'>)})
                (C {<read>} {<goon>})
              ]
              spids: [6252 6253 6275 -1]
            )
            (case_arm
              pat_list: [{<Id.Lit_Star '*'>}]
              action: [(C {<do_kernel_config>} {<menuconfig>})]
              spids: [6278 6279 6285 -1]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {<.config>} {<Id.Lit_RBracket ']'>})
        (C {<exit_error>} {(DQ <Id.Lit_Other '\\'> <'nNo config file, exiting...'>)})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<grep>} {<-q>} {(SQ <'CONFIG_X86_64=y'>)} {<.config>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:arch)
                  op: assign_op.Equal
                  rhs: {<x86_64>}
                  spids: [6337]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:karch)
                  op: assign_op.Equal
                  rhs: {<x86>}
                  spids: [6341]
                )
              ]
            )
          ]
          spids: [6320 6334]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<grep>} {<-q>} {(SQ <'CONFIG_X86_32=y'>)} {<.config>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:karch)
                  op: assign_op.Equal
                  rhs: {<x86>}
                  spids: [6361]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {<grep>} {<-q>} {(SQ <'CONFIG_X86_32_SMP=y'>)} {<.config>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:arch)
                          op: assign_op.Equal
                          rhs: {<i686>}
                          spids: [6382]
                        )
                      ]
                    )
                  ]
                  spids: [6365 6379]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:arch)
                      op: assign_op.Equal
                      rhs: {<i486>}
                      spids: [6389]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [6344 6358]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<grep>} {<-q>} {(SQ <'CONFIG_ARM=y'>)} {<.config>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:arch)
                  op: assign_op.Equal
                  rhs: {<arm>}
                  spids: [6415]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:karch)
                  op: assign_op.Equal
                  rhs: {<arm>}
                  spids: [6419]
                )
              ]
            )
          ]
          spids: [6398 6412]
        )
      ]
      else_action: [
        (C {<log_msg>} {(DQ <'Your arch is unsupported.'>)})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:arch)
              op: assign_op.Equal
              rhs: {<unknown>}
              spids: [6432]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:karch)
              op: assign_op.Equal
              rhs: {<arm>}
              spids: [6439]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:linux_kernel_dir)
          op: assign_op.Equal
          rhs: 
            {<linux_kernel-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix)}
          spids: [6448]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:kheaders_dir)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <kernel_headers-> (${ Id.VSub_Name kernel_version) <-> 
                (${ Id.VSub_Name package_name_suffix) <-> ($ Id.VSub_DollarName '$arch')
              )
            }
          spids: [6465]
        )
      ]
    )
    (C {<rm>} {<-rf>} {<../output/> (${ Id.VSub_Name kheaders_dir)})
    (C {<log_msg>} {(DQ <'Creating the kernel headers package'>)})
    (command.Simple
      words: [{<make>} {<headers_check>}]
      redirects: [
        (redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{(${ Id.VSub_Name BUILD_LOG)})
        (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})
      ]
    )
    (command.Simple
      words: [
        {<make>}
        {<Id.Lit_VarLike 'INSTALL_HDR_PATH='> (${ Id.VSub_Name kheaders_dir) </usr>}
        {<headers_install>}
      ]
      redirects: [
        (redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{(${ Id.VSub_Name BUILD_LOG)})
        (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})
      ]
    )
    (C {<find>} {(${ Id.VSub_Name kheaders_dir) </usr/include>} 
      {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\('>)} {<-name>} {<.install>} {<-o>} {<-name>} {<..install.cmd>} 
      {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'>)} {<-delete>}
    )
    (C {<mv>} {(${ Id.VSub_Name kheaders_dir)} {<../output>})
    (C {<log_msg>} {(DQ <'Building aufs-utils - userspace modules'>)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<grep>} {<-q>} {(SQ <'CONFIG_AUFS_FHSM=y'>)} {<.config>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [(C {<export>} {<Id.Lit_VarLike 'MAKE='> (DQ <'make BuildFHSM=yes'>)})]
          spids: [6579 6593]
        )
      ]
      else_action: [(C {<export>} {<Id.Lit_VarLike 'MAKE='> (DQ <'make BuildFHSM=no'>)})]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LinuxSrc)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name CWD) </output/> (${ Id.VSub_Name kheaders_dir)}
          spids: [6618]
        )
      ]
    )
    (C {<cd>} {<../aufs-util>})
    (C {<export>} 
      {<Id.Lit_VarLike 'CPPFLAGS='> (DQ <'-I '> ($ Id.VSub_DollarName '$LinuxSrc') </usr/include>)}
    )
    (command.Simple
      words: [
        {<echo>}
        {
          (DQ <'export CPPFLAGS='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'-I '> 
            ($ Id.VSub_DollarName '$LinuxSrc') </usr/include> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'make clean\n'> 
            ($ Id.VSub_DollarName '$MAKE') <'\n'> <'make DESTDIR='> ($ Id.VSub_DollarName '$CWD') </output/aufs-util-> 
            (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name arch) <' install\n'>
          )
        }
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<compile>})]
    )
    (command.Simple
      words: [{<make>} {<clean>}]
      redirects: [(redir.Redir op:<Id.Redir_AndGreat '&>'> fd:-1 arg_word:{</dev/null>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{($ Id.VSub_DollarName '$MAKE')}]
          redirects: [
            (redir.Redir
              op: <Id.Redir_DGreat '>>'>
              fd: -1
              arg_word: {(${ Id.VSub_Name BUILD_LOG)}
            )
            (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})
          ]
        )
        (C {<exit_error>} {(DQ <'Failed to compile aufs-util'>)})
      ]
    )
    (command.Simple
      words: [
        {<make>}
        {<Id.Lit_VarLike 'DESTDIR='> ($ Id.VSub_DollarName '$CWD') </output/aufs-util-> 
          (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name arch)
        }
        {<install>}
      ]
      redirects: [
        (redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{(${ Id.VSub_Name BUILD_LOG)})
        (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})
      ]
    )
    (command.Simple
      words: [{<make>} {<clean>}]
      redirects: [
        (redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{(${ Id.VSub_Name BUILD_LOG)})
        (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})
      ]
    )
    (C {<mkdir>} {<-p>} 
      {($ Id.VSub_DollarName '$CWD') </output/aufs-util-> (${ Id.VSub_Name kernel_version) <-> 
        (${ Id.VSub_Name arch) </usr/lib>
      }
    )
    (command.Simple
      words: [
        {<mv>}
        {<-fv>}
        {($ Id.VSub_DollarName '$CWD') </output/aufs-util-> (${ Id.VSub_Name kernel_version) <-> 
          (${ Id.VSub_Name arch) </libau.so> <Id.Lit_Star '*'>
        }
        {($ Id.VSub_DollarName '$CWD') </output/aufs-util-> (${ Id.VSub_Name kernel_version) <-> 
          (${ Id.VSub_Name arch) </usr/lib>
        }
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '2>'> fd:2 arg_word:{</dev/null>})]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$arch'))} {<Id.Lit_Equals '='>} 
                  {(DQ <x86_64>)} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<mv>} 
              {($ Id.VSub_DollarName '$CWD') </output/aufs-util-> (${ Id.VSub_Name kernel_version) <-> 
                (${ Id.VSub_Name arch) </usr/lib>
              } 
              {($ Id.VSub_DollarName '$CWD') </output/aufs-util-> (${ Id.VSub_Name kernel_version) <-> 
                (${ Id.VSub_Name arch) </usr/lib64>
              }
            )
          ]
          spids: [6807 6825]
        )
      ]
    )
    (C {<log_msg>} {(DQ <aufs-util-> (${ Id.VSub_Name kernel_version) <' is in output'>)})
    (C {<cd>} {<..>})
    (C {<cd>} {<linux-> (${ Id.VSub_Name kernel_version)})
    (command.Simple
      words: [
        {<echo>}
        {
          (DQ <'make '> (${ Id.VSub_Name JOBS) <' bzImage modules\n'> <'make INSTALL_MOD_PATH='> 
            (${ Id.VSub_Name linux_kernel_dir) <' modules_install'>
          )
        }
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<compile>})]
    )
    (command.Pipeline
      children: [
        (C {<log_msg>} {(DQ <'Compiling the kernel'>)})
        (C {<tee>} {<-a>} {(${ Id.VSub_Name BUILD_LOG)})
      ]
      negated: F
    )
    (command.Simple
      words: [{<make>} {(${ Id.VSub_Name JOBS)} {<bzImage>} {<modules>}]
      redirects: [
        (redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{(${ Id.VSub_Name BUILD_LOG)})
        (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:KCONFIG)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <output/DOTconfig-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name HOST_ARCH) 
                <-> (${ Id.VSub_Name today)
              )
            }
          spids: [6946]
        )
      ]
    )
    (C {<cp>} {<.config>} {<../> (${ Id.VSub_Name KCONFIG)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$karch'))} {<Id.Lit_Equals '='>} 
                  {(DQ <x86>)} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {<arch/x86/boot/bzImage>} 
                          {<-o>} {<Id.KW_Bang '!'>} {<-f>} {<System.map>} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(C {<exit_error>} {(DQ <'Error: failed to compile the kernel sources.'>)})]
                  spids: [6993 7015]
                )
              ]
            )
          ]
          spids: [6972 6990]
        )
      ]
      else_action: [
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {<arch/arm/boot/zImage>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              action: [(C {<exit_error>} {(DQ <'Error: failed to compile the kernel sources.'>)})]
              spids: [7030 7044]
            )
          ]
        )
      ]
    )
    (C {<log_msg>} {(DQ <'Creating the kernel package'>)})
    (command.Simple
      words: [
        {<make>}
        {<Id.Lit_VarLike 'INSTALL_MOD_PATH='> (${ Id.VSub_Name linux_kernel_dir)}
        {<modules_install>}
      ]
      redirects: [
        (redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{(${ Id.VSub_Name BUILD_LOG)})
        (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})
      ]
    )
    (C {<rm>} {<-f>} 
      (word.BracedTree
        parts: [
          (${ Id.VSub_Name linux_kernel_dir)
          </lib/modules/>
          (${ Id.VSub_Name kernel_version)
          (${ Id.VSub_Name custom_suffix)
          </>
          (word_part.BracedTuple words:[{<build>} {<source>}])
        ]
      )
    )
    (C {<mkdir>} {<-p>} {(${ Id.VSub_Name linux_kernel_dir) </boot>})
    (C {<mkdir>} {<-p>} {(${ Id.VSub_Name linux_kernel_dir) </etc/modules>})
    (C {<cp>} {<.config>} 
      {(${ Id.VSub_Name linux_kernel_dir) </boot/config-> (${ Id.VSub_Name kernel_version) 
        (${ Id.VSub_Name custom_suffix)
      }
    )
    (C {<cp>} {<System.map>} 
      {(${ Id.VSub_Name linux_kernel_dir) </boot/System.map-> (${ Id.VSub_Name kernel_version) 
        (${ Id.VSub_Name custom_suffix)
      }
    )
    (C {<cp>} {<.config>} 
      {(${ Id.VSub_Name linux_kernel_dir) </etc/modules/DOTconfig-> (${ Id.VSub_Name kernel_version) 
        <-> (${ Id.VSub_Name today)
      }
    )
    (C {<cp>} 
      {(${ Id.VSub_Name linux_kernel_dir) </lib/modules/> (${ Id.VSub_Name kernel_version) 
        (${ Id.VSub_Name custom_suffix) </modules.builtin>
      } 
      {(${ Id.VSub_Name linux_kernel_dir) </etc/modules/modules.builtin-> 
        (${ Id.VSub_Name kernel_version) (${ Id.VSub_Name custom_suffix)
      }
    )
    (C {<cp>} 
      {(${ Id.VSub_Name linux_kernel_dir) </lib/modules/> (${ Id.VSub_Name kernel_version) 
        (${ Id.VSub_Name custom_suffix) </modules.order>
      } 
      {(${ Id.VSub_Name linux_kernel_dir) </etc/modules/modules.order-> 
        (${ Id.VSub_Name kernel_version) (${ Id.VSub_Name custom_suffix)
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BZIMAGE)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (C {<find>} {<.>} {<-type>} {<f>} {<-name>} {<bzImage>})
                          (C {<head>} {<-1>})
                        ]
                        negated: F
                      )
                    ]
                  )
              )
            }
          spids: [7242]
        )
      ]
    )
    (C {<cp>} {(${ Id.VSub_Name BZIMAGE)} {(${ Id.VSub_Name linux_kernel_dir) </boot>})
    (C {<cp>} {(${ Id.VSub_Name BZIMAGE)} {(${ Id.VSub_Name linux_kernel_dir) </boot/vmlinuz>})
    (C {<mv>} {(${ Id.VSub_Name linux_kernel_dir)} {<../output>})
    (C {<mv>} {<../output/> (${ Id.VSub_Name linux_kernel_dir) </boot/vmlinuz>} 
      {<../output/vmlinuz-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix)}
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-f>} 
          {<../output/> (${ Id.VSub_Name linux_kernel_dir) </boot/bzImage>} {<Id.Lit_RBracket ']'>}
        )
        (C {<rm>} {<-f>} {<../output/> (${ Id.VSub_Name linux_kernel_dir) </boot/bzImage>})
      ]
    )
    (C {<log_msg>} 
      {
        (DQ <'Huge kernel '> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix) 
          <' is ready in dist'>
        )
      }
    )
    (C {<log_msg>} {(DQ <'Cleaning the kernel sources'>)})
    (command.Simple
      words: [{<make>} {<clean>}]
      redirects: [
        (redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{(${ Id.VSub_Name BUILD_LOG)})
        (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})
      ]
    )
    (command.Simple
      words: [{<make>} {<prepare>}]
      redirects: [
        (redir.Redir op:<Id.Redir_DGreat '>>'> fd:-1 arg_word:{(${ Id.VSub_Name BUILD_LOG)})
        (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})
      ]
    )
    (C {<cd>} {<..>})
    (C {<log_msg>} {(DQ <'Installing aufs-utils into kernel package'>)})
    (C {<cp>} {<-a>} {<--remove-destination>} 
      {<output/aufs-util-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name arch) </> 
        <Id.Lit_Star '*'>
      } {<output/> (${ Id.VSub_Name linux_kernel_dir)}
    )
    (C {<log_msg>} {(DQ <'Creating a kernel sources SFS'>)})
    (C {<mkdir>} {<-p>} 
      {<kernel_sources-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix) 
        </usr/src>
      }
    )
    (C {<mv>} {<linux-> (${ Id.VSub_Name kernel_version)} 
      {<kernel_sources-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix) 
        </usr/src/linux>
      }
    )
    (C {<mkdir>} {<-p>} 
      {<kernel_sources-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix) 
        </lib/modules/> (${ Id.VSub_Name kernel_version) (${ Id.VSub_Name custom_suffix)
      }
    )
    (C {<ln>} {<-s>} {</usr/src/linux>} 
      {<kernel_sources-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix) 
        </lib/modules/> (${ Id.VSub_Name kernel_version) (${ Id.VSub_Name custom_suffix) </build>
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} 
                  {<kernel_sources-> (${ Id.VSub_Name kernel_version) <-> 
                    (${ Id.VSub_Name package_name_suffix) </usr/src/linux/include/linux/version.h>
                  } {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<ln>} {<-s>} {</usr/src/linux/include/generated/uapi/linux/version.h>} 
              {<kernel_sources-> (${ Id.VSub_Name kernel_version) <-> 
                (${ Id.VSub_Name package_name_suffix) </usr/src/linux/include/linux/version.h>
              }
            )
          ]
          spids: [7518 7540]
        )
      ]
    )
    (C {<ln>} {<-s>} {</usr/src/linux>} 
      {<kernel_sources-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix) 
        </lib/modules/> (${ Id.VSub_Name kernel_version) (${ Id.VSub_Name custom_suffix) </source>
      }
    )
    (C {<mksquashfs>} 
      {<kernel_sources-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix)} 
      {<output/kernel_sources-> (${ Id.VSub_Name kernel_version) <-> 
        (${ Id.VSub_Name package_name_suffix) <.sfs>
      } {($ Id.VSub_DollarName '$COMP')}
    )
    (command.Simple
      words: [
        {<md5sum>}
        {<output/kernel_sources-> (${ Id.VSub_Name kernel_version) <-> 
          (${ Id.VSub_Name package_name_suffix) <.sfs>
        }
      ]
      redirects: [
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: 
            {<output/kernel_sources-> (${ Id.VSub_Name kernel_version) <-> 
              (${ Id.VSub_Name package_name_suffix) <.sfs.md5.txt>
            }
        )
      ]
    )
    (command.Simple
      words: [
        {<sha256sum>}
        {<output/kernel_sources-> (${ Id.VSub_Name kernel_version) <-> 
          (${ Id.VSub_Name package_name_suffix) <.sfs>
        }
      ]
      redirects: [
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: 
            {<output/kernel_sources-> (${ Id.VSub_Name kernel_version) <-> 
              (${ Id.VSub_Name package_name_suffix) <.sfs.sha256.txt>
            }
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$LIBRE')} {<-eq>} {<0>} 
                  {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$FW_PKG_URL'))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fw_pkg)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name FW_PKG_URL>
                                suffix_op: 
                                  (suffix_op.Unary
                                    op_id: Id.VOp1_DPound
                                    arg_word: {<'*'> <Id.Lit_Slash />}
                                  )
                              )
                            }
                          spids: [7698]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$fw_pkg')}
                      arms: [
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'> <.sfs>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:FDRV)
                                  op: assign_op.Equal
                                  rhs: 
                                    {<fdrv.sfs-> (${ Id.VSub_Name kernel_version) <-> 
                                      (${ Id.VSub_Name package_name_suffix)
                                    }
                                  spids: [7722]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {<-f>} 
                                  {(DQ ($ Id.VSub_DollarName '$FW_PKG_URL'))} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<cp>} {(DQ ($ Id.VSub_DollarName '$FW_PKG_URL'))} 
                                  {<output/> (${ Id.VSub_Name FDRV)}
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {<-f>} {<sources/> (${ Id.VSub_Name fw_pkg)} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                                (C {<cp>} {<sources/> (${ Id.VSub_Name fw_pkg)} 
                                  {<output/> (${ Id.VSub_Name FDRV)}
                                )
                              ]
                            )
                          ]
                          spids: [7717 7719 7786 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'> <.tar.> <Id.Lit_Star '*'>}]
                          action: [
                            (C {<mkdir>} {<-p>} {<output/> (${ Id.VSub_Name linux_kernel_dir) </lib>})
                            (C {<tar>} {<-xaf>} {<sources/> (${ Id.VSub_Name fw_pkg)} {<-C>} 
                              {<output/> (${ Id.VSub_Name linux_kernel_dir) </lib/>}
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                                (C {<exit_error>} {(DQ <'failed to unpack '> (${ Id.VSub_Name fw_pkg))})
                              ]
                            )
                          ]
                          spids: [7789 7792 7846 -1]
                        )
                      ]
                    )
                  ]
                  spids: [7683 7695]
                )
              ]
              else_action: [
                (C {<log_msg>} {(DQ <'Pausing here to add extra firmware.'>)})
                (command.Case
                  to_match: {(${ Id.VSub_Name FIRMWARE_OPT)}
                  arms: [
                    (case_arm
                      pat_list: [{<manual>}]
                      action: [
                        (C {<log_msg>} {(DQ <'once you have manually added firmware to '>)})
                        (C {<log_msg>} 
                          {(DQ <output/> (${ Id.VSub_Name linux_kernel_dir) </lib/firmware>)}
                        )
                        (C {<echo>} {(DQ <'hit ENTER to continue'>)})
                        (C {<read>} {<firm>})
                      ]
                      spids: [7871 7872 7905 -1]
                    )
                    (case_arm
                      pat_list: [{<git>}]
                      action: [
                        (C {<export>} {<Id.Lit_VarLike 'GIT_ALREADY_DOWNLOADED='> <yes>})
                        (C {<./fw.sh>} {(${ Id.VSub_Name fw_flag)})
                        (command.If
                          arms: [
                            (if_arm
                              cond: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                              action: [
                                (C {<log_msg>} 
                                  {
                                    (DQ 
                                      <
'Extracting firmware from the kernel.org git repo has succeeded.'
                                      >
                                    )
                                  }
                                )
                              ]
                              spids: [7932 7946]
                            )
                          ]
                          else_action: [
                            (C {<log_msg>} 
                              {
                                (DQ 
                                  <
'WARNING: Extracting firmware from the kernel.org git repo has failed.'
                                  >
                                )
                              }
                            )
                            (C {<log_msg>} 
                              {(DQ <'While your kernel is built, your firmware is incomplete.'>)}
                            )
                          ]
                        )
                      ]
                      spids: [7908 7909 7976 -1]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [7662 7676]
        )
      ]
    )
    (C {<mksquashfs>} {<output/> (${ Id.VSub_Name linux_kernel_dir)} 
      {<output/kernel-modules.sfs-> (${ Id.VSub_Name kernel_version) <-> 
        (${ Id.VSub_Name package_name_suffix)
      } {($ Id.VSub_DollarName '$COMP')}
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<Id.Lit_Equals '='>} {<0>} 
          {<Id.Lit_RBracket ']'>}
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
    )
    (C {<log_msg>} {(DQ <'Huge compatible kernel packages are ready to package./'>)})
    (C {<log_msg>} 
      {
        (DQ <'Packaging huge-'> (${ Id.VSub_Name kernel_version) <-> 
          (${ Id.VSub_Name package_name_suffix) <' kernel'>
        )
      }
    )
    (C {<cd>} {<output/>})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<tar>} {<-cjvf>} 
          {<huge-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix) <.tar.bz2>} {<vmlinuz-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix)} 
          {(${ Id.VSub_Name FDRV)} {<kernel-modules.sfs-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix)}
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
    )
    (C {<echo>} 
      {
        (DQ <huge-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix) 
          <'.tar.bz2 is in output'>
        )
      }
    )
    (command.Simple
      words: [
        {<md5sum>}
        {<huge-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix) <.tar.bz2>}
      ]
      redirects: [
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: 
            {<huge-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix) 
              <.tar.bz2.md5.txt>
            }
        )
      ]
    )
    (command.Simple
      words: [
        {<sha256sum>}
        {<huge-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix) <.tar.bz2>}
      ]
      redirects: [
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: 
            {<huge-> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix) 
              <.tar.bz2.sha256.txt>
            }
        )
      ]
    )
    (C {<echo>})
    (C {<cd>} {<->})
    (C {<log_msg>} {(DQ <'Compressing the log'>)})
    (C {<bzip2>} {<-9>} {<build.log>})
    (C {<cp>} {<build.log.bz2>} {<output>})
    (C {<log_msg>} 
      {
        (DQ <'------------------\n'> <'Output files:\n'> <'- output/huge-'> 
          (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix) <'.tar.bz2\n'> 
          <'  (kernel tarball: vmlinuz, modules.sfs - used in the woof process)\n'> <'  you can use this to replace vmlinuz and zdrv.sfs from the current wce puppy install..\n'> <'\n'> 
          <'- output/kernel_sources-'> (${ Id.VSub_Name kernel_version) <-> (${ Id.VSub_Name package_name_suffix) <'.sfs\n'> 
          <'  (you can use this to compile new kernel modules - load or install first..)\n'> <------------------>
        )
      }
    )
    (C {<echo>} {(DQ <'Done!'>)})
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-f>} {</usr/share/sounds/2barks.au>} {<Id.Lit_RBracket ']'>})
        (C {<aplay>} {</usr/share/sounds/2barks.au>})
      ]
    )
  ]
)