(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$KBUILD_VERBOSE'))} 
                  {(Id.Lit_Equals '=')} {(DQ (1))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:40)
            )
          ]
          action: [(C {(Id.KW_Set set)} {(-x)})]
          spids: [25 42]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ignore)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:57)
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Pipeline
                          children: [
                            (C {(echo)} {(DQ ($ Id.VSub_DollarName '$RCS_FIND_IGNORE'))})
                            (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s|\\\\||g' span_id:69))})
                          ]
                          negated: F
                        )
                      ]
                    )
                )
              )
            }
          spids: [55]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ignore)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$ignore') (' ( -name *.mod.c ) -prune -o'))}
          spids: [78]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name KBUILD_SRC))} {(Id.Lit_Equals '=')} {(DQ )} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:110)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:tree)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [115]
                )
              ]
            )
          ]
          spids: [94 112]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:tree)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name srctree) (/)}
              spids: [120]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ignore)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$ignore') (' ( -path ') (${ Id.VSub_Name tree) 
                ('tools ) -prune -o')
              )
            }
          spids: [132]
        )
      ]
    )
    (command.ShFunction
      name: find_all_archs
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ALLSOURCE_ARCHS)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [153]
                )
              ]
            )
            (command.ForEach
              iter_name: arch
              iter_words: [
                {
                  (command_sub
                    left_token: (Token id:Id.Left_Backtick val:'`' span_id:164)
                    command_list: 
                      (command.CommandList
                        children: [(C {(ls)} {(${ Id.VSub_Name tree) (arch)})]
                      )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ALLSOURCE_ARCHS)
                          op: assign_op.Equal
                          rhs: 
                            {(DQ (${ Id.VSub_Name ALLSOURCE_ARCHS) (' ')) 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:arch span_id:187)
                                suffix_op: 
                                  (suffix_op.Unary
                                    op_id: Id.VOp1_DPound
                                    arg_word: 
                                      {
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\/' span_id:189)
                                        )
                                      }
                                  )
                              )
                            }
                          spids: [179]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name ALLSOURCE_ARCHS))} 
                  {(Id.Lit_Equals '=')} {(DQ )} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:217)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ALLSOURCE_ARCHS)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name SRCARCH)}
                  spids: [222]
                )
              ]
            )
          ]
          spids: [201 219]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name ALLSOURCE_ARCHS))} 
                  {(Id.Lit_Equals '=')} {(DQ (all))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:244)
            )
          ]
          action: [(C {(find_all_archs)})]
          spids: [227 246]
        )
      ]
    )
    (command.ShFunction
      name: find_arch_sources
      body: 
        (command.BraceGroup
          children: [
            (command.ForEach
              iter_name: i
              iter_words: [{($ Id.VSub_DollarName '$archincludedir')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:prune)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$prune') (' -wholename ') 
                                ($ Id.VSub_DollarName '$i') (' -prune -o')
                              )
                            }
                          spids: [276]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.Sentence
              child: 
                (C {(find)} {(${ Id.VSub_Name tree) (arch/) ($ Id.VSub_Number '$1')} 
                  {($ Id.VSub_DollarName '$ignore')} {($ Id.VSub_DollarName '$subarchprune')} {($ Id.VSub_DollarName '$prune')} {(-name)} 
                  {(DQ ($ Id.VSub_Number '$2'))} {(-not)} {(-type)} {(l)} {(-print)}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:317)
            )
          ]
        )
    )
    (command.ShFunction
      name: find_arch_include_sources
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:include)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:333)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(find)} 
                                    {(${ Id.VSub_Name tree) (arch/) ($ Id.VSub_Number '$1') (/)} {($ Id.VSub_DollarName '$subarchprune')} {(-name)} {(include)} {(-type)} {(d)} {(-print)}
                                  )
                                ]
                              )
                          )
                        }
                      spids: [332]
                    )
                  ]
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:357)
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$include'))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:371)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:archincludedir)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$archincludedir') (' ') 
                                ($ Id.VSub_DollarName '$include')
                              )
                            }
                          spids: [376]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C {(find)} {($ Id.VSub_DollarName '$include')} 
                          {($ Id.VSub_DollarName '$ignore')} {(-name)} {(DQ ($ Id.VSub_Number '$2'))} {(-not)} {(-type)} {(l)} {(-print)}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:403)
                    )
                  ]
                  spids: [360 373]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: find_include_sources
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {(find)} {(${ Id.VSub_Name tree) (include)} {($ Id.VSub_DollarName '$ignore')} 
                  {(-name)} {(config)} {(-prune)} {(-o)} {(-name)} {(DQ ($ Id.VSub_Number '$1'))} {(-not)} {(-type)} {(l)} {(-print)}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:453)
            )
          ]
        )
    )
    (command.ShFunction
      name: find_other_sources
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {(find)} {(${ Id.VSub_Name tree) (Id.Lit_Star '*')} 
                  {($ Id.VSub_DollarName '$ignore')} {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\(' span_id:482))} {(-name)} 
                  {(include)} {(-o)} {(-name)} {(arch)} {(-o)} {(-name)} {(SQ (Token id:Id.Lit_Chars val:'.tmp_*' span_id:499))} 
                  {
                    (word_part.EscapedLiteral
                      token: (Token id:Id.Lit_EscapedChar val:'\\)' span_id:502)
                    )
                  } {(-prune)} {(-o)} {(-name)} {(DQ ($ Id.VSub_Number '$1'))} {(-not)} {(-type)} {(l)} {(-print)}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:523)
            )
          ]
        )
    )
    (command.ShFunction
      name: find_sources
      body: 
        (command.BraceGroup
          children: [(C {(find_arch_sources)} {($ Id.VSub_Number '$1')} {(DQ ($ Id.VSub_Number '$2'))})]
        )
    )
    (command.ShFunction
      name: all_sources
      body: 
        (command.BraceGroup
          children: [
            (C {(find_arch_include_sources)} {(${ Id.VSub_Name SRCARCH)} 
              {(SQ (Token id:Id.Lit_Chars val:'*.[chS]' span_id:560))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-z)} 
                          {(DQ ($ Id.VSub_DollarName '$archinclude'))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:577)
                    )
                  ]
                  action: [
                    (C {(find_arch_include_sources)} {($ Id.VSub_DollarName '$archinclude')} 
                      {(SQ (Token id:Id.Lit_Chars val:'*.[chS]' span_id:587))}
                    )
                  ]
                  spids: [564 579]
                )
              ]
            )
            (C {(find_include_sources)} {(SQ (Token id:Id.Lit_Chars val:'*.[chS]' span_id:597))})
            (command.ForEach
              iter_name: arch
              iter_words: [{($ Id.VSub_DollarName '$ALLSOURCE_ARCHS')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(find_sources)} {($ Id.VSub_DollarName '$arch')} 
                      {(SQ (Token id:Id.Lit_Chars val:'*.[chS]' span_id:618))}
                    )
                  ]
                )
            )
            (C {(find_other_sources)} {(SQ (Token id:Id.Lit_Chars val:'*.[chS]' span_id:628))})
          ]
        )
    )
    (command.ShFunction
      name: all_compiled_sources
      body: 
        (command.BraceGroup
          children: [
            (command.ForEach
              iter_name: i
              iter_words: [
                {
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:647)
                    command_list: (command.CommandList children:[(C {(all_sources)})])
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$i'))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Id.Lit_Star '*') (.) (Id.Lit_LBracket '[') (cS) (Id.Lit_RBracket ']')}
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:j)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:i span_id:674)
                                        suffix_op: 
                                          (suffix_op.PatSub
                                            pat: 
                                              {
                                                (word_part.EscapedLiteral
                                                  token: 
                                                    (Token
                                                      id: Id.Lit_EscapedChar
                                                      val: '\\.'
                                                      span_id: 676
                                                    )
                                                ) ('[cS]')
                                              }
                                            replace: 
                                              {
                                                (word_part.EscapedLiteral
                                                  token: 
                                                    (Token
                                                      id: Id.Lit_EscapedChar
                                                      val: '\\.'
                                                      span_id: 679
                                                    )
                                                ) (o)
                                              }
                                            replace_mode: Id.Undefined_Tok
                                          )
                                      )
                                    }
                                  spids: [672]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Id.Lit_LBracket '[')} {(-e)} {($ Id.VSub_DollarName '$j')} 
                                          {(Id.Lit_RBracket ']')}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:693)
                                    )
                                  ]
                                  action: [(C {(echo)} {($ Id.VSub_DollarName '$i')})]
                                  spids: [684 695]
                                )
                              ]
                            )
                          ]
                          spids: [664 669 706 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [(C {(echo)} {($ Id.VSub_DollarName '$i')})]
                          spids: [709 710 718 -1]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: all_target_sources
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {(DQ ($ Id.VSub_DollarName '$COMPILED_SOURCE'))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:747)
                    )
                  ]
                  action: [(C {(all_compiled_sources)})]
                  spids: [736 749]
                )
              ]
              else_action: [(C {(all_sources)})]
            )
          ]
        )
    )
    (command.ShFunction
      name: all_kconfigs
      body: 
        (command.BraceGroup
          children: [
            (command.ForEach
              iter_name: arch
              iter_words: [{($ Id.VSub_DollarName '$ALLSOURCE_ARCHS')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(find_sources)} {($ Id.VSub_DollarName '$arch')} 
                      {(SQ (Token id:Id.Lit_Chars val:'Kconfig*' span_id:790))}
                    )
                  ]
                )
            )
            (C {(find_other_sources)} {(SQ (Token id:Id.Lit_Chars val:'Kconfig*' span_id:800))})
          ]
        )
    )
    (command.ShFunction
      name: docscope
      body: 
        (command.BraceGroup
          children: [
            (command.Subshell
              command_list: 
                (command.CommandList
                  children: [
                    (command.Sentence
                      child: 
                        (C {(echo)} 
                          {
                            (word_part.EscapedLiteral
                              token: (Token id:Id.Lit_EscapedChar val:'\\-' span_id:816)
                            ) (k)
                          }
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:818)
                    )
                    (command.Sentence
                      child: 
                        (C {(echo)} 
                          {
                            (word_part.EscapedLiteral
                              token: (Token id:Id.Lit_EscapedChar val:'\\-' span_id:822)
                            ) (q)
                          }
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:824)
                    )
                    (C {(all_target_sources)})
                  ]
                )
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:829)
                  fd: -1
                  arg_word: {(cscope.files)}
                )
              ]
            )
            (C {(cscope)} {(-b)} {(-f)} {(cscope.out)})
          ]
        )
    )
    (command.ShFunction
      name: dogtags
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [(C {(all_target_sources)}) (C {(gtags)} {(-i)} {(-f)} {(-)})]
              negated: F
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:regex_asm)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: (Token id:Id.Op_LParen val:'(' span_id:892)
                words: [
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^\\(ENTRY\\|_GLOBAL\\)(\\([[:alnum:]_\\\\]*\\)).*/\\2/'
                        span_id: 896
                      )
                    )
                  }
                ]
              )
            }
          spids: [891]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:regex_c)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: (Token id:Id.Op_LParen val:'(' span_id:902)
                words: [
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^SYSCALL_DEFINE[0-9](\\([[:alnum:]_]*\\).*/sys_\\1/'
                        span_id: 906
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^COMPAT_SYSCALL_DEFINE[0-9](\\([[:alnum:]_]*\\).*/compat_sys_\\1/'
                        span_id: 911
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^TRACE_EVENT(\\([[:alnum:]_]*\\).*/trace_\\1/'
                        span_id: 916
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^TRACE_EVENT(\\([[:alnum:]_]*\\).*/trace_\\1_rcuidle/'
                        span_id: 921
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^DEFINE_EVENT([^,)]*, *\\([[:alnum:]_]*\\).*/trace_\\1/'
                        span_id: 926
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^DEFINE_EVENT([^,)]*, *\\([[:alnum:]_]*\\).*/trace_\\1_rcuidle/'
                        span_id: 931
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^DEFINE_INSN_CACHE_OPS(\\([[:alnum:]_]*\\).*/get_\\1_slot/'
                        span_id: 936
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^DEFINE_INSN_CACHE_OPS(\\([[:alnum:]_]*\\).*/free_\\1_slot/'
                        span_id: 941
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^PAGEFLAG(\\([[:alnum:]_]*\\).*/Page\\1/'
                        span_id: 946
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^PAGEFLAG(\\([[:alnum:]_]*\\).*/SetPage\\1/'
                        span_id: 951
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^PAGEFLAG(\\([[:alnum:]_]*\\).*/ClearPage\\1/'
                        span_id: 956
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^TESTSETFLAG(\\([[:alnum:]_]*\\).*/TestSetPage\\1/'
                        span_id: 961
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^TESTPAGEFLAG(\\([[:alnum:]_]*\\).*/Page\\1/'
                        span_id: 966
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^SETPAGEFLAG(\\([[:alnum:]_]*\\).*/SetPage\\1/'
                        span_id: 971
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<__SETPAGEFLAG(\\([[:alnum:]_]*\\).*/__SetPage\\1/'
                        span_id: 976
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<TESTCLEARFLAG(\\([[:alnum:]_]*\\).*/TestClearPage\\1/'
                        span_id: 981
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<__TESTCLEARFLAG(\\([[:alnum:]_]*\\).*/TestClearPage\\1/'
                        span_id: 986
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<CLEARPAGEFLAG(\\([[:alnum:]_]*\\).*/ClearPage\\1/'
                        span_id: 991
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<__CLEARPAGEFLAG(\\([[:alnum:]_]*\\).*/__ClearPage\\1/'
                        span_id: 996
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^__PAGEFLAG(\\([[:alnum:]_]*\\).*/__SetPage\\1/'
                        span_id: 1001
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^__PAGEFLAG(\\([[:alnum:]_]*\\).*/__ClearPage\\1/'
                        span_id: 1006
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^PAGEFLAG_FALSE(\\([[:alnum:]_]*\\).*/Page\\1/'
                        span_id: 1011
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<TESTSCFLAG(\\([[:alnum:]_]*\\).*/TestSetPage\\1/'
                        span_id: 1016
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<TESTSCFLAG(\\([[:alnum:]_]*\\).*/TestClearPage\\1/'
                        span_id: 1021
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<SETPAGEFLAG_NOOP(\\([[:alnum:]_]*\\).*/SetPage\\1/'
                        span_id: 1026
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<CLEARPAGEFLAG_NOOP(\\([[:alnum:]_]*\\).*/ClearPage\\1/'
                        span_id: 1031
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<__CLEARPAGEFLAG_NOOP(\\([[:alnum:]_]*\\).*/__ClearPage\\1/'
                        span_id: 1036
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<TESTCLEARFLAG_FALSE(\\([[:alnum:]_]*\\).*/TestClearPage\\1/'
                        span_id: 1041
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^PAGE_MAPCOUNT_OPS(\\([[:alnum:]_]*\\).*/Page\\1/'
                        span_id: 1046
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^PAGE_MAPCOUNT_OPS(\\([[:alnum:]_]*\\).*/__SetPage\\1/'
                        span_id: 1051
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^PAGE_MAPCOUNT_OPS(\\([[:alnum:]_]*\\).*/__ClearPage\\1/'
                        span_id: 1056
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^TASK_PFA_TEST([^,]*, *\\([[:alnum:]_]*\\))/task_\\1/'
                        span_id: 1061
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^TASK_PFA_SET([^,]*, *\\([[:alnum:]_]*\\))/task_set_\\1/'
                        span_id: 1066
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^TASK_PFA_CLEAR([^,]*, *\\([[:alnum:]_]*\\))/task_clear_\\1/'
                        span_id: 1071
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^DEF_MMIO_\\(IN\\|OUT\\)_[XD](\\([[:alnum:]_]*\\),[^)]*)/\\2/'
                        span_id: 1076
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^DEBUGGER_BOILERPLATE(\\([[:alnum:]_]*\\))/\\1/'
                        span_id: 1081
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^DEF_PCI_AC_\\(\\|NO\\)RET(\\([[:alnum:]_]*\\).*/\\2/'
                        span_id: 1086
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^PCI_OP_READ(\\(\\w*\\).*[1-4])/pci_bus_read_config_\\1/'
                        span_id: 1091
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/^PCI_OP_WRITE(\\(\\w*\\).*[1-4])/pci_bus_write_config_\\1/'
                        span_id: 1096
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: 
'/\\<DEFINE_\\(MUTEX\\|SEMAPHORE\\|SPINLOCK\\)(\\([[:alnum:]_]*\\)/\\2/v/'
                        span_id: 1101
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: 
'/\\<DEFINE_\\(RAW_SPINLOCK\\|RWLOCK\\|SEQLOCK\\)(\\([[:alnum:]_]*\\)/\\2/v/'
                        span_id: 1106
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<DECLARE_\\(RWSEM\\|COMPLETION\\)(\\([[:alnum:]_]\\+\\)/\\2/v/'
                        span_id: 1111
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<DECLARE_BITMAP(\\([[:alnum:]_]*\\)/\\1/v/'
                        span_id: 1116
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\(^\\|\\s\\)\\(\\|L\\|H\\)LIST_HEAD(\\([[:alnum:]_]*\\)/\\3/v/'
                        span_id: 1121
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\(^\\|\\s\\)RADIX_TREE(\\([[:alnum:]_]*\\)/\\2/v/'
                        span_id: 1126
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<DEFINE_PER_CPU([^,]*, *\\([[:alnum:]_]*\\)/\\1/v/'
                        span_id: 1131
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<DEFINE_PER_CPU_SHARED_ALIGNED([^,]*, *\\([[:alnum:]_]*\\)/\\1/v/'
                        span_id: 1136
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<DECLARE_WAIT_QUEUE_HEAD(\\([[:alnum:]_]*\\)/\\1/v/'
                        span_id: 1141
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: 
'/\\<DECLARE_\\(TASKLET\\|WORK\\|DELAYED_WORK\\)(\\([[:alnum:]_]*\\)/\\2/v/'
                        span_id: 1146
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\(^\\s\\)OFFSET(\\([[:alnum:]_]*\\)/\\2/v/'
                        span_id: 1151
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\(^\\s\\)DEFINE(\\([[:alnum:]_]*\\)/\\2/v/'
                        span_id: 1156
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/\\<DEFINE_HASHTABLE(\\([[:alnum:]_]*\\)/\\1/v/'
                        span_id: 1161
                      )
                    )
                  }
                ]
              )
            }
          spids: [901]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:regex_kconfig)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: (Token id:Id.Op_LParen val:'(' span_id:1167)
                words: [
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: 
'/^[[:blank:]]*\\(menu\\|\\)config[[:blank:]]\\+\\([[:alnum:]_]\\+\\)/\\2/'
                        span_id: 1171
                      )
                    )
                  }
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: 
'/^[[:blank:]]*\\(menu\\|\\)config[[:blank:]]\\+\\([[:alnum:]_]\\+\\)/CONFIG_\\2/'
                        span_id: 1176
                      )
                    )
                  }
                ]
              )
            }
          spids: [1166]
        )
      ]
    )
    (command.ShFunction
      name: setup_regex
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'mode=') ($ Id.VSub_Number '$1')} {(lang)} 
              {(Id.Lit_VarLike 'tmp=') 
                (sh_array_literal left:(Token id:Id.Op_LParen val:'(' span_id:1196))
              } {(r)}
            )
            (C {(shift)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:regex)
                  op: assign_op.Equal
                  rhs: {(sh_array_literal left:(Token id:Id.Op_LParen val:'(' span_id:1207))}
                  spids: [1206]
                )
              ]
            )
            (command.ForEach
              iter_name: lang
              do_arg_iter: T
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$lang'))}
                      arms: [
                        (case_arm
                          pat_list: [{(asm)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:tmp)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (sh_array_literal
                                        left: (Token id:Id.Op_LParen val:'(' span_id:1232)
                                        words: [
                                          {
                                            (DQ 
                                              (braced_var_sub
                                                token: 
                                                  (Token
                                                    id: Id.VSub_Name
                                                    val: regex_asm
                                                    span_id: 1235
                                                  )
                                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                              )
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [1231]
                                )
                              ]
                            )
                          ]
                          spids: [1228 1229 1243 -1]
                        )
                        (case_arm
                          pat_list: [{(c)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:tmp)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (sh_array_literal
                                        left: (Token id:Id.Op_LParen val:'(' span_id:1250)
                                        words: [
                                          {
                                            (DQ 
                                              (braced_var_sub
                                                token: 
                                                  (Token
                                                    id: Id.VSub_Name
                                                    val: regex_c
                                                    span_id: 1253
                                                  )
                                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                              )
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [1249]
                                )
                              ]
                            )
                          ]
                          spids: [1246 1247 1261 -1]
                        )
                        (case_arm
                          pat_list: [{(kconfig)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:tmp)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (sh_array_literal
                                        left: (Token id:Id.Op_LParen val:'(' span_id:1268)
                                        words: [
                                          {
                                            (DQ 
                                              (braced_var_sub
                                                token: 
                                                  (Token
                                                    id: Id.VSub_Name
                                                    val: regex_kconfig
                                                    span_id: 1271
                                                  )
                                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                              )
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [1267]
                                )
                              ]
                            )
                          ]
                          spids: [1264 1265 1279 -1]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: r
                      iter_words: [
                        {
                          (DQ 
                            (braced_var_sub
                              token: (Token id:Id.VSub_Name val:tmp span_id:1293)
                              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                            )
                          )
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(test)} {(DQ ($ Id.VSub_DollarName '$mode'))} 
                                          {(Id.Lit_Equals '=')} {(DQ (exuberant))}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:1317)
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.IndexedName
                                              name: regex
                                              index: 
                                                (arith_expr.ArithWord
                                                  w: 
                                                    {
                                                      (braced_var_sub
                                                        token: 
                                                          (Token
                                                            id: Id.VSub_Name
                                                            val: regex
                                                            span_id: 1343
                                                          )
                                                        prefix_op: (Id.VSub_Pound)
                                                        bracket_op: 
                                                          (bracket_op.WholeArray
                                                            op_id: Id.Lit_At
                                                          )
                                                      )
                                                    }
                                                )
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (--regex-) ($ Id.VSub_DollarName '$lang') ('=') 
                                                (${ Id.VSub_Name r) (b)
                                              )
                                            }
                                          spids: [1322]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1304 1319]
                                )
                              ]
                              else_action: [
                                (command.Case
                                  to_match: {(DQ ($ Id.VSub_DollarName '$r'))}
                                  arms: [
                                    (case_arm
                                      pat_list: [
                                        {(/) (Id.Lit_Star '*') (/) (Id.Lit_Star '*') (/) 
                                          (Id.Lit_QMark '?') (/)
                                        }
                                      ]
                                      action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:r)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (braced_var_sub
                                                    token: (Token id:Id.VSub_Name val:r span_id:1378)
                                                    suffix_op: 
                                                      (suffix_op.Unary
                                                        op_id: Id.VOp1_Percent
                                                        arg_word: {('?') (Id.Lit_Slash /)}
                                                      )
                                                  )
                                                }
                                              spids: [1376]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [1366 1373 -1 1385]
                                    )
                                  ]
                                )
                                (command.Case
                                  to_match: {(DQ ($ Id.VSub_DollarName '$r'))}
                                  arms: [
                                    (case_arm
                                      pat_list: [{(/) (Id.Lit_Other '^') (Id.Lit_Star '*')}]
                                      spids: [1401 1404 1406 -1]
                                    )
                                    (case_arm
                                      pat_list: [{(Id.Lit_Star '*')}]
                                      action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:r)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ('/^[^#]*') 
                                                    (braced_var_sub
                                                      token: 
                                                        (Token
                                                          id: Id.VSub_Name
                                                          val: r
                                                          span_id: 1417
                                                        )
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          op_id: Id.VOp1_Pound
                                                          arg_word: {(Id.Lit_Slash /)}
                                                        )
                                                    )
                                                  )
                                                }
                                              spids: [1413]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [1409 1410 -1 1424]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: 
                                        (sh_lhs_expr.IndexedName
                                          name: regex
                                          index: 
                                            (arith_expr.ArithWord
                                              w: 
                                                {
                                                  (braced_var_sub
                                                    token: 
                                                      (Token
                                                        id: Id.VSub_Name
                                                        val: regex
                                                        span_id: 1443
                                                      )
                                                    prefix_op: (Id.VSub_Pound)
                                                    bracket_op: 
                                                      (bracket_op.WholeArray
                                                        op_id: Id.Lit_At
                                                      )
                                                  )
                                                }
                                            )
                                        )
                                      op: assign_op.Equal
                                      rhs: {(DQ ('--regex=') ($ Id.VSub_DollarName '$r'))}
                                      spids: [1427]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: exuberant
      body: 
        (command.BraceGroup
          children: [
            (C {(setup_regex)} {(exuberant)} {(asm)} {(c)})
            (command.Pipeline
              children: [
                (C {(all_target_sources)})
                (C {(xargs)} {($ Id.VSub_Number '$1')} {(-a)} {(-I)} 
                  {(__initdata) (Id.Lit_Comma ',') (__exitdata) (Id.Lit_Comma ',') (__initconst) 
                    (Id.Lit_Comma ',')
                  } {(-I)} {(__initdata_memblock)} {(-I)} 
                  {(__refdata) (Id.Lit_Comma ',') (__attribute) (Id.Lit_Comma ',') (__maybe_unused) 
                    (Id.Lit_Comma ',') (__always_unused)
                  } {(-I)} {(__acquires) (Id.Lit_Comma ',') (__releases) (Id.Lit_Comma ',') (__deprecated)} {(-I)} 
                  {(__read_mostly) (Id.Lit_Comma ',') (__aligned) (Id.Lit_Comma ',') 
                    (____cacheline_aligned)
                  } {(-I)} {(____cacheline_aligned_in_smp)} {(-I)} 
                  {(__cacheline_aligned) (Id.Lit_Comma ',') (__cacheline_aligned_in_smp)} {(-I)} {(____cacheline_internodealigned_in_smp)} {(-I)} 
                  {(__used) (Id.Lit_Comma ',') (__packed) (Id.Lit_Comma ',') (__packed2__) 
                    (Id.Lit_Comma ',') (__must_check) (Id.Lit_Comma ',') (__must_hold)
                  } {(-I)} {(EXPORT_SYMBOL) (Id.Lit_Comma ',') (EXPORT_SYMBOL_GPL) (Id.Lit_Comma ',') (ACPI_EXPORT_SYMBOL)} 
                  {(-I)} 
                  {(DEFINE_TRACE) (Id.Lit_Comma ',') (EXPORT_TRACEPOINT_SYMBOL) (Id.Lit_Comma ',') 
                    (EXPORT_TRACEPOINT_SYMBOL_GPL)
                  } {(-I)} {(static) (Id.Lit_Comma ',') (const)} {(--extra) (Id.Lit_Equals '=') (Id.Lit_Other '+') (f)} 
                  {(--c-kinds) (Id.Lit_Equals '=') (Id.Lit_Other '+') (px)} {(--langmap) (Id.Lit_Equals '=') (c) (Id.Lit_Other ':') (Id.Lit_Other '+') (.h)} 
                  {
                    (DQ 
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:regex span_id:1619)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      )
                    )
                  }
                )
              ]
              negated: F
            )
            (C {(setup_regex)} {(exuberant)} {(kconfig)})
            (command.Pipeline
              children: [
                (C {(all_kconfigs)})
                (C {(xargs)} {($ Id.VSub_Number '$1')} {(-a)} {(--langdef) (Id.Lit_Equals '=') (kconfig)} 
                  {(--language-force) (Id.Lit_Equals '=') (kconfig)} 
                  {
                    (DQ 
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:regex span_id:1657)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      )
                    )
                  }
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: emacs
      body: 
        (command.BraceGroup
          children: [
            (C {(setup_regex)} {(emacs)} {(asm)} {(c)})
            (command.Pipeline
              children: [
                (C {(all_target_sources)})
                (C {(xargs)} {($ Id.VSub_Number '$1')} {(-a)} 
                  {
                    (DQ 
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:regex span_id:1696)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      )
                    )
                  }
                )
              ]
              negated: F
            )
            (C {(setup_regex)} {(emacs)} {(kconfig)})
            (command.Pipeline
              children: [
                (C {(all_kconfigs)})
                (C {(xargs)} {($ Id.VSub_Number '$1')} {(-a)} 
                  {
                    (DQ 
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:regex span_id:1724)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      )
                    )
                  }
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: xtags
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [
                            (command.Simple
                              words: [{($ Id.VSub_Number '$1')} {(--version)}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1747)
                                  fd: 2
                                  arg_word: {(1)}
                                )
                              ]
                            )
                            (C {(grep)} {(-iq)} {(exuberant)})
                          ]
                          negated: F
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1757)
                    )
                  ]
                  action: [(C {(exuberant)} {($ Id.VSub_Number '$1')})]
                  spids: [1741 1759]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [
                            (command.Simple
                              words: [{($ Id.VSub_Number '$1')} {(--version)}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1773)
                                  fd: 2
                                  arg_word: {(1)}
                                )
                              ]
                            )
                            (C {(grep)} {(-iq)} {(emacs)})
                          ]
                          negated: F
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1783)
                    )
                  ]
                  action: [(C {(emacs)} {($ Id.VSub_Number '$1')})]
                  spids: [1767 1785]
                )
              ]
              else_action: [
                (command.Pipeline
                  children: [(C {(all_target_sources)}) (C {(xargs)} {($ Id.VSub_Number '$1')} {(-a)})]
                  negated: F
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name ARCH))} {(Id.Lit_Equals '=')} {(DQ (um))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1832)
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$SUBARCH'))} 
                          {(Id.Lit_Equals '=')} {(DQ (i386))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1852)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:archinclude)
                          op: assign_op.Equal
                          rhs: {(x86)}
                          spids: [1857]
                        )
                      ]
                    )
                  ]
                  spids: [1837 1854]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$SUBARCH'))} 
                          {(Id.Lit_Equals '=')} {(DQ (x86_64))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1876)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:archinclude)
                          op: assign_op.Equal
                          rhs: {(x86)}
                          spids: [1881]
                        )
                      ]
                    )
                  ]
                  spids: [1861 1878]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:archinclude)
                      op: assign_op.Equal
                      rhs: {(${ Id.VSub_Name SUBARCH)}
                      spids: [1888]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [1815 1834]
        )
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name SRCARCH))} {(Id.Lit_Equals '=')} 
                  {(DQ (arm))} {(-a)} {(DQ (${ Id.VSub_Name SUBARCH))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ )} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1927)
            )
          ]
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:subarchdir)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1933)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(find)} 
                                    {(${ Id.VSub_Name tree) (arch/) ($ Id.VSub_DollarName '$SRCARCH') 
                                      (/)
                                    } {(-name)} {(DQ ('mach-*'))} {(-type)} {(d)} {(-o)} {(-name)} {(DQ ('plat-*'))} {(-type)} {(d)}
                                  )
                                ]
                              )
                          )
                        }
                      spids: [1932]
                    )
                  ]
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1967)
            )
            (command.ForEach
              iter_name: i
              iter_words: [{($ Id.VSub_DollarName '$subarchdir')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$i'))}
                      arms: [
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*') (DQ (mach-)) (${ Id.VSub_Name SUBARCH)}]
                          spids: [1991 1998 2001 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*') (DQ (plat-)) (${ Id.VSub_Name SUBARCH)}]
                          spids: [2004 2011 2014 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:subarchprune)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$subarchprune') (' ') 
                                        ('\t\t\t\t\t\t-wholename ') ($ Id.VSub_DollarName '$i') (' -prune -o')
                                      )
                                    }
                                  spids: [2021]
                                )
                              ]
                            )
                          ]
                          spids: [2017 2018 2032 -1]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
          spids: [1896 1929]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:remove_structs)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [2043]
        )
      ]
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_Number '$1'))}
      arms: [
        (case_arm
          pat_list: [{(DQ (cscope))}]
          action: [(C {(docscope)})]
          spids: [2054 2057 2063 -1]
        )
        (case_arm
          pat_list: [{(DQ (gtags))}]
          action: [(C {(dogtags)})]
          spids: [2067 2070 2076 -1]
        )
        (case_arm
          pat_list: [{(DQ (tags))}]
          action: [
            (C {(rm)} {(-f)} {(tags)})
            (C {(xtags)} {(ctags)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:remove_structs)
                  op: assign_op.Equal
                  rhs: {(y)}
                  spids: [2098]
                )
              ]
            )
          ]
          spids: [2080 2083 2102 -1]
        )
        (case_arm
          pat_list: [{(DQ (TAGS))}]
          action: [
            (C {(rm)} {(-f)} {(TAGS)})
            (C {(xtags)} {(etags)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:remove_structs)
                  op: assign_op.Equal
                  rhs: {(y)}
                  spids: [2124]
                )
              ]
            )
          ]
          spids: [2106 2109 2128 -1]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$remove_structs'))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:2147)
            )
          ]
          action: [
            (command.Simple
              words: [
                {(sed)}
                {(-i)}
                {(-e)}
                {
                  (SQ 
                    (Token
                      id: Id.Lit_Chars
                      val: 
'/^\\([a-zA-Z_][a-zA-Z0-9_]*\\)\\t.*\\t\\/\\^struct \\1;.*\\$\\/;"\\tx$/d'
                      span_id: 2162
                    )
                  )
                }
                {($ Id.VSub_Number '$1')}
              ]
              more_env: [(env_pair name:LANG val:{(C)} spids:[2152])]
            )
          ]
          spids: [2136 2149]
        )
      ]
    )
  ]
)