(CommandList
  children: [
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$KBUILD_VERBOSE'))} {(Lit_Other '=')} {(DQ (1))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(set)} {(-x)})]
          spids: [-1 42]
        )
      ]
      spids: [-1 49]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ignore)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (Pipeline
                          children: [
                            (C {(echo)} {(DQ ($ VSub_Name '$RCS_FIND_IGNORE'))})
                            (C {(sed)} {(SQ <'s|\\\\||g'>)})
                          ]
                          negated: False
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [57 72]
                )
              )
            }
          spids: [55]
        )
      ]
      spids: [55]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ignore)
          op: Equal
          rhs: {(DQ ($ VSub_Name '$ignore') (' ( -name *.mod.c ) -prune -o'))}
          spids: [78]
        )
      ]
      spids: [78]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ (${ VSub_Name KBUILD_SRC))} {(Lit_Other '=')} {(DQ )} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:tree) op:Equal rhs:{(SQ )} spids:[115])]
              spids: [115]
            )
          ]
          spids: [-1 112]
        )
      ]
      else_action: [
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:tree)
              op: Equal
              rhs: {(${ VSub_Name srctree) (/)}
              spids: [120]
            )
          ]
          spids: [120]
        )
      ]
      spids: [117 126]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ignore)
          op: Equal
          rhs: {(DQ ($ VSub_Name '$ignore') (' ( -path ') (${ VSub_Name tree) ('tools ) -prune -o'))}
          spids: [132]
        )
      ]
      spids: [132]
    )
    (FuncDef
      name: find_all_archs
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ALLSOURCE_ARCHS)
                  op: Equal
                  rhs: {(DQ )}
                  spids: [153]
                )
              ]
              spids: [153]
            )
            (ForEach
              iter_name: arch
              iter_words: [
                {
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(ls)} {(${ VSub_Name tree) (arch)})])
                    left_token: <Left_Backtick '`'>
                    spids: [164 171]
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ALLSOURCE_ARCHS)
                          op: Equal
                          rhs: 
                            {(DQ (${ VSub_Name ALLSOURCE_ARCHS) (' ')) 
                              (BracedVarSub
                                token: <VSub_Name arch>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VOp1_DPound
                                    arg_word: {(EscapedLiteralPart token:<Lit_EscapedChar '\\/'>)}
                                  )
                                spids: [184 188]
                              )
                            }
                          spids: [177]
                        )
                      ]
                      spids: [177]
                    )
                  ]
                  spids: [174 191]
                )
              spids: [163 172]
            )
          ]
          spids: [150]
        )
      spids: [146 149]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ (${ VSub_Name ALLSOURCE_ARCHS))} {(Lit_Other '=')} {(DQ )} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ALLSOURCE_ARCHS)
                  op: Equal
                  rhs: {(${ VSub_Name SRCARCH)}
                  spids: [220]
                )
              ]
              spids: [220]
            )
          ]
          spids: [-1 217]
        )
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ (${ VSub_Name ALLSOURCE_ARCHS))} {(Lit_Other '=')} {(DQ (all))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(find_all_archs)})]
          spids: [225 244]
        )
      ]
      spids: [-1 249]
    )
    (FuncDef
      name: find_arch_sources
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$archincludedir')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:prune)
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_Name '$prune') (' -wholename ') ($ VSub_Name '$i') 
                                (' -prune -o')
                              )
                            }
                          spids: [274]
                        )
                      ]
                      spids: [274]
                    )
                  ]
                  spids: [271 283]
                )
              spids: [267 269]
            )
            (Sentence
              child: 
                (C {(find)} {(${ VSub_Name tree) (arch/) ($ VSub_Number '$1')} {($ VSub_Name '$ignore')} 
                  {($ VSub_Name '$subarchprune')} {($ VSub_Name '$prune')} {(-name)} {(DQ ($ VSub_Number '$2'))} {(-not)} {(-type)} {(l)} {(-print)}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [259]
        )
      spids: [255 258]
    )
    (FuncDef
      name: find_arch_include_sources
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:include)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(find)} {(${ VSub_Name tree) (arch/) ($ VSub_Number '$1') (/)} 
                                    {($ VSub_Name '$subarchprune')} {(-name)} {(include)} {(-type)} {(d)} {(-print)}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [331 354]
                          )
                        }
                      spids: [330]
                    )
                  ]
                  spids: [330]
                )
              terminator: <Op_Semi ';'>
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$include'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:archincludedir)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$archincludedir') (' ') ($ VSub_Name '$include'))}
                          spids: [374]
                        )
                      ]
                      spids: [374]
                    )
                    (Sentence
                      child: 
                        (C {(find)} {($ VSub_Name '$include')} {($ VSub_Name '$ignore')} {(-name)} 
                          {(DQ ($ VSub_Number '$2'))} {(-not)} {(-type)} {(l)} {(-print)}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [-1 371]
                )
              ]
              spids: [-1 404]
            )
          ]
          spids: [327]
        )
      spids: [323 326]
    )
    (FuncDef
      name: find_include_sources
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (C {(find)} {(${ VSub_Name tree) (include)} {($ VSub_Name '$ignore')} {(-name)} {(config)} 
                  {(-prune)} {(-o)} {(-name)} {(DQ ($ VSub_Number '$1'))} {(-not)} {(-type)} {(l)} {(-print)}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [416]
        )
      spids: [412 415]
    )
    (FuncDef
      name: find_other_sources
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (C {(find)} {(${ VSub_Name tree) (Lit_Other '*')} {($ VSub_Name '$ignore')} 
                  {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} {(-name)} {(include)} {(-o)} {(-name)} {(arch)} {(-o)} {(-name)} {(SQ <'.tmp_*'>)} 
                  {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} {(-prune)} {(-o)} {(-name)} {(DQ ($ VSub_Number '$1'))} {(-not)} {(-type)} {(l)} {(-print)}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [466]
        )
      spids: [462 465]
    )
    (FuncDef
      name: find_sources
      body: 
        (BraceGroup
          children: [(C {(find_arch_sources)} {($ VSub_Number '$1')} {(DQ ($ VSub_Number '$2'))})]
          spids: [530]
        )
      spids: [526 529]
    )
    (FuncDef
      name: all_sources
      body: 
        (BraceGroup
          children: [
            (C {(find_arch_include_sources)} {(${ VSub_Name SRCARCH)} {(SQ <'*.[chS]'>)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$archinclude'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(find_arch_include_sources)} {($ VSub_Name '$archinclude')} {(SQ <'*.[chS]'>)})
                  ]
                  spids: [-1 577]
                )
              ]
              spids: [-1 589]
            )
            (C {(find_include_sources)} {(SQ <'*.[chS]'>)})
            (ForEach
              iter_name: arch
              iter_words: [{($ VSub_Name '$ALLSOURCE_ARCHS')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [(C {(find_sources)} {($ VSub_Name '$arch')} {(SQ <'*.[chS]'>)})]
                  spids: [608 620]
                )
              spids: [604 -1]
            )
            (C {(find_other_sources)} {(SQ <'*.[chS]'>)})
          ]
          spids: [548]
        )
      spids: [544 547]
    )
    (FuncDef
      name: all_compiled_sources
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: i
              iter_words: [
                {
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(all_sources)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [645 647]
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(DQ ($ VSub_Name '$i'))}
                      arms: [
                        (case_arm
                          pat_list: [{(Lit_Other '*') (.) (Lit_Other '[') (cS) (Lit_Other ']')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:j)
                                  op: Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name i>
                                        suffix_op: 
                                          (PatSub
                                            pat: 
                                              {(EscapedLiteralPart token:<Lit_EscapedChar '\\.'>) 
                                                ('[cS]')
                                              }
                                            replace: 
                                              {(EscapedLiteralPart token:<Lit_EscapedChar '\\.'>) 
                                                (o)
                                              }
                                            do_all: False
                                            do_prefix: False
                                            do_suffix: False
                                          )
                                        spids: [671 679]
                                      )
                                    }
                                  spids: [670]
                                )
                              ]
                              spids: [670]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-e)} {($ VSub_Name '$j')} 
                                          {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [(C {(echo)} {($ VSub_Name '$i')})]
                                  spids: [-1 693]
                                )
                              ]
                              spids: [-1 701]
                            )
                          ]
                          spids: [662 667 704 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [(C {(echo)} {($ VSub_Name '$i')})]
                          spids: [707 708 716 -1]
                        )
                      ]
                      spids: [653 659 719]
                    )
                  ]
                  spids: [650 722]
                )
              spids: [644 648]
            )
          ]
          spids: [636]
        )
      spids: [632 635]
    )
    (FuncDef
      name: all_target_sources
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$COMPILED_SOURCE'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(all_compiled_sources)})]
                  spids: [-1 747]
                )
              ]
              else_action: [(C {(all_sources)})]
              spids: [753 759]
            )
          ]
          spids: [731]
        )
      spids: [727 730]
    )
    (FuncDef
      name: all_kconfigs
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: arch
              iter_words: [{($ VSub_Name '$ALLSOURCE_ARCHS')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [(C {(find_sources)} {($ VSub_Name '$arch')} {(SQ <'Kconfig*'>)})]
                  spids: [780 792]
                )
              spids: [776 778]
            )
            (C {(find_other_sources)} {(SQ <'Kconfig*'>)})
          ]
          spids: [768]
        )
      spids: [764 767]
    )
    (FuncDef
      name: docscope
      body: 
        (BraceGroup
          children: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence
                      child: (C {(echo)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\-'>) (k)})
                      terminator: <Op_Semi ';'>
                    )
                    (Sentence
                      child: (C {(echo)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\-'>) (q)})
                      terminator: <Op_Semi ';'>
                    )
                    (C {(all_target_sources)})
                  ]
                )
              redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(cscope.files)} spids:[827])]
              spids: [811 825]
            )
            (C {(cscope)} {(-b)} {(-f)} {(cscope.out)})
          ]
          spids: [808]
        )
      spids: [804 807]
    )
    (FuncDef
      name: dogtags
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [(C {(all_target_sources)}) (C {(gtags)} {(-i)} {(-f)} {(-)})]
              negated: False
            )
          ]
          spids: [847]
        )
      spids: [843 846]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:regex_asm)
          op: Equal
          rhs: 
            {
              (ArrayLiteralPart
                words: [{(SQ <'/^\\(ENTRY\\|_GLOBAL\\)(\\([[:alnum:]_\\\\]*\\)).*/\\2/'>)}]
              )
            }
          spids: [889]
        )
      ]
      spids: [889]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:regex_c)
          op: Equal
          rhs: 
            {
              (ArrayLiteralPart
                words: [
                  {(SQ <'/^SYSCALL_DEFINE[0-9](\\([[:alnum:]_]*\\).*/sys_\\1/'>)}
                  {(SQ <'/^COMPAT_SYSCALL_DEFINE[0-9](\\([[:alnum:]_]*\\).*/compat_sys_\\1/'>)}
                  {(SQ <'/^TRACE_EVENT(\\([[:alnum:]_]*\\).*/trace_\\1/'>)}
                  {(SQ <'/^TRACE_EVENT(\\([[:alnum:]_]*\\).*/trace_\\1_rcuidle/'>)}
                  {(SQ <'/^DEFINE_EVENT([^,)]*, *\\([[:alnum:]_]*\\).*/trace_\\1/'>)}
                  {(SQ <'/^DEFINE_EVENT([^,)]*, *\\([[:alnum:]_]*\\).*/trace_\\1_rcuidle/'>)}
                  {(SQ <'/^DEFINE_INSN_CACHE_OPS(\\([[:alnum:]_]*\\).*/get_\\1_slot/'>)}
                  {(SQ <'/^DEFINE_INSN_CACHE_OPS(\\([[:alnum:]_]*\\).*/free_\\1_slot/'>)}
                  {(SQ <'/^PAGEFLAG(\\([[:alnum:]_]*\\).*/Page\\1/'>)}
                  {(SQ <'/^PAGEFLAG(\\([[:alnum:]_]*\\).*/SetPage\\1/'>)}
                  {(SQ <'/^PAGEFLAG(\\([[:alnum:]_]*\\).*/ClearPage\\1/'>)}
                  {(SQ <'/^TESTSETFLAG(\\([[:alnum:]_]*\\).*/TestSetPage\\1/'>)}
                  {(SQ <'/^TESTPAGEFLAG(\\([[:alnum:]_]*\\).*/Page\\1/'>)}
                  {(SQ <'/^SETPAGEFLAG(\\([[:alnum:]_]*\\).*/SetPage\\1/'>)}
                  {(SQ <'/\\<__SETPAGEFLAG(\\([[:alnum:]_]*\\).*/__SetPage\\1/'>)}
                  {(SQ <'/\\<TESTCLEARFLAG(\\([[:alnum:]_]*\\).*/TestClearPage\\1/'>)}
                  {(SQ <'/\\<__TESTCLEARFLAG(\\([[:alnum:]_]*\\).*/TestClearPage\\1/'>)}
                  {(SQ <'/\\<CLEARPAGEFLAG(\\([[:alnum:]_]*\\).*/ClearPage\\1/'>)}
                  {(SQ <'/\\<__CLEARPAGEFLAG(\\([[:alnum:]_]*\\).*/__ClearPage\\1/'>)}
                  {(SQ <'/^__PAGEFLAG(\\([[:alnum:]_]*\\).*/__SetPage\\1/'>)}
                  {(SQ <'/^__PAGEFLAG(\\([[:alnum:]_]*\\).*/__ClearPage\\1/'>)}
                  {(SQ <'/^PAGEFLAG_FALSE(\\([[:alnum:]_]*\\).*/Page\\1/'>)}
                  {(SQ <'/\\<TESTSCFLAG(\\([[:alnum:]_]*\\).*/TestSetPage\\1/'>)}
                  {(SQ <'/\\<TESTSCFLAG(\\([[:alnum:]_]*\\).*/TestClearPage\\1/'>)}
                  {(SQ <'/\\<SETPAGEFLAG_NOOP(\\([[:alnum:]_]*\\).*/SetPage\\1/'>)}
                  {(SQ <'/\\<CLEARPAGEFLAG_NOOP(\\([[:alnum:]_]*\\).*/ClearPage\\1/'>)}
                  {(SQ <'/\\<__CLEARPAGEFLAG_NOOP(\\([[:alnum:]_]*\\).*/__ClearPage\\1/'>)}
                  {(SQ <'/\\<TESTCLEARFLAG_FALSE(\\([[:alnum:]_]*\\).*/TestClearPage\\1/'>)}
                  {(SQ <'/^PAGE_MAPCOUNT_OPS(\\([[:alnum:]_]*\\).*/Page\\1/'>)}
                  {(SQ <'/^PAGE_MAPCOUNT_OPS(\\([[:alnum:]_]*\\).*/__SetPage\\1/'>)}
                  {(SQ <'/^PAGE_MAPCOUNT_OPS(\\([[:alnum:]_]*\\).*/__ClearPage\\1/'>)}
                  {(SQ <'/^TASK_PFA_TEST([^,]*, *\\([[:alnum:]_]*\\))/task_\\1/'>)}
                  {(SQ <'/^TASK_PFA_SET([^,]*, *\\([[:alnum:]_]*\\))/task_set_\\1/'>)}
                  {(SQ <'/^TASK_PFA_CLEAR([^,]*, *\\([[:alnum:]_]*\\))/task_clear_\\1/'>)}
                  {(SQ <'/^DEF_MMIO_\\(IN\\|OUT\\)_[XD](\\([[:alnum:]_]*\\),[^)]*)/\\2/'>)}
                  {(SQ <'/^DEBUGGER_BOILERPLATE(\\([[:alnum:]_]*\\))/\\1/'>)}
                  {(SQ <'/^DEF_PCI_AC_\\(\\|NO\\)RET(\\([[:alnum:]_]*\\).*/\\2/'>)}
                  {(SQ <'/^PCI_OP_READ(\\(\\w*\\).*[1-4])/pci_bus_read_config_\\1/'>)}
                  {(SQ <'/^PCI_OP_WRITE(\\(\\w*\\).*[1-4])/pci_bus_write_config_\\1/'>)}
                  {(SQ <'/\\<DEFINE_\\(MUTEX\\|SEMAPHORE\\|SPINLOCK\\)(\\([[:alnum:]_]*\\)/\\2/v/'>)}
                  {
                    (SQ 
                      <
'/\\<DEFINE_\\(RAW_SPINLOCK\\|RWLOCK\\|SEQLOCK\\)(\\([[:alnum:]_]*\\)/\\2/v/'
                      >
                    )
                  }
                  {(SQ <'/\\<DECLARE_\\(RWSEM\\|COMPLETION\\)(\\([[:alnum:]_]\\+\\)/\\2/v/'>)}
                  {(SQ <'/\\<DECLARE_BITMAP(\\([[:alnum:]_]*\\)/\\1/v/'>)}
                  {(SQ <'/\\(^\\|\\s\\)\\(\\|L\\|H\\)LIST_HEAD(\\([[:alnum:]_]*\\)/\\3/v/'>)}
                  {(SQ <'/\\(^\\|\\s\\)RADIX_TREE(\\([[:alnum:]_]*\\)/\\2/v/'>)}
                  {(SQ <'/\\<DEFINE_PER_CPU([^,]*, *\\([[:alnum:]_]*\\)/\\1/v/'>)}
                  {(SQ <'/\\<DEFINE_PER_CPU_SHARED_ALIGNED([^,]*, *\\([[:alnum:]_]*\\)/\\1/v/'>)}
                  {(SQ <'/\\<DECLARE_WAIT_QUEUE_HEAD(\\([[:alnum:]_]*\\)/\\1/v/'>)}
                  {
                    (SQ 
                      <
'/\\<DECLARE_\\(TASKLET\\|WORK\\|DELAYED_WORK\\)(\\([[:alnum:]_]*\\)/\\2/v/'
                      >
                    )
                  }
                  {(SQ <'/\\(^\\s\\)OFFSET(\\([[:alnum:]_]*\\)/\\2/v/'>)}
                  {(SQ <'/\\(^\\s\\)DEFINE(\\([[:alnum:]_]*\\)/\\2/v/'>)}
                  {(SQ <'/\\<DEFINE_HASHTABLE(\\([[:alnum:]_]*\\)/\\1/v/'>)}
                ]
              )
            }
          spids: [899]
        )
      ]
      spids: [899]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:regex_kconfig)
          op: Equal
          rhs: 
            {
              (ArrayLiteralPart
                words: [
                  {
                    (SQ <'/^[[:blank:]]*\\(menu\\|\\)config[[:blank:]]\\+\\([[:alnum:]_]\\+\\)/\\2/'>)
                  }
                  {
                    (SQ 
                      <
'/^[[:blank:]]*\\(menu\\|\\)config[[:blank:]]\\+\\([[:alnum:]_]\\+\\)/CONFIG_\\2/'
                      >
                    )
                  }
                ]
              )
            }
          spids: [1164]
        )
      ]
      spids: [1164]
    )
    (FuncDef
      name: setup_regex
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:mode)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1188]
                )
                (assign_pair lhs:(LhsName name:lang) op:Equal spids:[1191])
                (assign_pair
                  lhs: (LhsName name:tmp)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [1193]
                )
                (assign_pair lhs:(LhsName name:r) op:Equal spids:[1197])
              ]
              spids: [1186]
            )
            (C {(shift)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:regex)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [1204]
                )
              ]
              spids: [1204]
            )
            (ForEach
              iter_name: lang
              do_arg_iter: True
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(DQ ($ VSub_Name '$lang'))}
                      arms: [
                        (case_arm
                          pat_list: [{(asm)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:tmp)
                                  op: Equal
                                  rhs: 
                                    {
                                      (ArrayLiteralPart
                                        words: [
                                          {
                                            (DQ 
                                              (BracedVarSub
                                                token: <VSub_Name regex_asm>
                                                bracket_op: (WholeArray op_id:Lit_At)
                                                spids: [1232 1237]
                                              )
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [1229]
                                )
                              ]
                              spids: [1229]
                            )
                          ]
                          spids: [1226 1227 1241 -1]
                        )
                        (case_arm
                          pat_list: [{(c)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:tmp)
                                  op: Equal
                                  rhs: 
                                    {
                                      (ArrayLiteralPart
                                        words: [
                                          {
                                            (DQ 
                                              (BracedVarSub
                                                token: <VSub_Name regex_c>
                                                bracket_op: (WholeArray op_id:Lit_At)
                                                spids: [1250 1255]
                                              )
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [1247]
                                )
                              ]
                              spids: [1247]
                            )
                          ]
                          spids: [1244 1245 1259 -1]
                        )
                        (case_arm
                          pat_list: [{(kconfig)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:tmp)
                                  op: Equal
                                  rhs: 
                                    {
                                      (ArrayLiteralPart
                                        words: [
                                          {
                                            (DQ 
                                              (BracedVarSub
                                                token: <VSub_Name regex_kconfig>
                                                bracket_op: (WholeArray op_id:Lit_At)
                                                spids: [1268 1273]
                                              )
                                            )
                                          }
                                        ]
                                      )
                                    }
                                  spids: [1265]
                                )
                              ]
                              spids: [1265]
                            )
                          ]
                          spids: [1262 1263 1277 -1]
                        )
                      ]
                      spids: [1217 1223 1280]
                    )
                    (ForEach
                      iter_name: r
                      iter_words: [
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name tmp>
                              bracket_op: (WholeArray op_id:Lit_At)
                              spids: [1290 1295]
                            )
                          )
                        }
                      ]
                      do_arg_iter: False
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(test)} {(DQ ($ VSub_Name '$mode'))} {(Lit_Other '=')} 
                                          {(DQ (exuberant))}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C 
                                      {(regex) (Lit_Other '[') 
                                        (BracedVarSub
                                          token: <VSub_Name regex>
                                          prefix_op: VSub_Pound
                                          bracket_op: (WholeArray op_id:Lit_At)
                                          spids: [1322 1328]
                                        ) (Lit_Other ']') (Lit_Other '=') (DQ (--regex-) ($ VSub_Name '$lang') ('=') (${ VSub_Name r) (b))
                                      }
                                    )
                                  ]
                                  spids: [-1 1317]
                                )
                              ]
                              else_action: [
                                (Case
                                  to_match: {(DQ ($ VSub_Name '$r'))}
                                  arms: [
                                    (case_arm
                                      pat_list: [
                                        {(/) (Lit_Other '*') (/) (Lit_Other '*') (/) (Lit_Other '?') (/)}
                                      ]
                                      action: [
                                        (Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (LhsName name:r)
                                              op: Equal
                                              rhs: 
                                                {
                                                  (BracedVarSub
                                                    token: <VSub_Name r>
                                                    suffix_op: 
                                                      (StringUnary
                                                        op_id: VOp1_Percent
                                                        arg_word: {('?') (Lit_Slash /)}
                                                      )
                                                    spids: [1369 1374]
                                                  )
                                                }
                                              spids: [1368]
                                            )
                                          ]
                                          spids: [1368]
                                        )
                                      ]
                                      spids: [1358 1365 -1 1377]
                                    )
                                  ]
                                  spids: [1349 1355 1377]
                                )
                                (Case
                                  to_match: {(DQ ($ VSub_Name '$r'))}
                                  arms: [
                                    (case_arm
                                      pat_list: [{(/) (Lit_Other '^') (Lit_Other '*')}]
                                      spids: [1393 1396 1398 -1]
                                    )
                                    (case_arm
                                      pat_list: [{(Lit_Other '*')}]
                                      action: [
                                        (Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (LhsName name:r)
                                              op: Equal
                                              rhs: 
                                                {
                                                  (DQ ('/^[^#]*') 
                                                    (BracedVarSub
                                                      token: <VSub_Name r>
                                                      suffix_op: 
                                                        (StringUnary
                                                          op_id: VOp1_Pound
                                                          arg_word: {(Lit_Slash /)}
                                                        )
                                                      spids: [1408 1412]
                                                    )
                                                  )
                                                }
                                              spids: [1405]
                                            )
                                          ]
                                          spids: [1405]
                                        )
                                      ]
                                      spids: [1401 1402 -1 1416]
                                    )
                                  ]
                                  spids: [1384 1390 1416]
                                )
                                (C 
                                  {(regex) (Lit_Other '[') 
                                    (BracedVarSub
                                      token: <VSub_Name regex>
                                      prefix_op: VSub_Pound
                                      bracket_op: (WholeArray op_id:Lit_At)
                                      spids: [1421 1427]
                                    ) (Lit_Other ']') (Lit_Other '=') (DQ ('--regex=') ($ VSub_Name '$r'))
                                  }
                                )
                              ]
                              spids: [1342 1436]
                            )
                          ]
                          spids: [1299 1439]
                        )
                      spids: [1288 1297]
                    )
                  ]
                  spids: [1214 1442]
                )
              spids: [-1 -1]
            )
          ]
          spids: [1183]
        )
      spids: [1179 1182]
    )
    (FuncDef
      name: exuberant
      body: 
        (BraceGroup
          children: [
            (C {(setup_regex)} {(exuberant)} {(asm)} {(c)})
            (Pipeline
              children: [
                (C {(all_target_sources)})
                (C {(xargs)} {($ VSub_Number '$1')} {(-a)} {(-I)} 
                  {(__initdata) (Lit_Comma ',') (__exitdata) (Lit_Comma ',') (__initconst) 
                    (Lit_Comma ',')
                  } {(-I)} {(__initdata_memblock)} {(-I)} 
                  {(__refdata) (Lit_Comma ',') (__attribute) (Lit_Comma ',') (__maybe_unused) 
                    (Lit_Comma ',') (__always_unused)
                  } {(-I)} {(__acquires) (Lit_Comma ',') (__releases) (Lit_Comma ',') (__deprecated)} {(-I)} 
                  {(__read_mostly) (Lit_Comma ',') (__aligned) (Lit_Comma ',') (____cacheline_aligned)} {(-I)} {(____cacheline_aligned_in_smp)} {(-I)} 
                  {(__cacheline_aligned) (Lit_Comma ',') (__cacheline_aligned_in_smp)} {(-I)} {(____cacheline_internodealigned_in_smp)} {(-I)} 
                  {(__used) (Lit_Comma ',') (__packed) (Lit_Comma ',') (__packed2__) (Lit_Comma ',') 
                    (__must_check) (Lit_Comma ',') (__must_hold)
                  } {(-I)} {(EXPORT_SYMBOL) (Lit_Comma ',') (EXPORT_SYMBOL_GPL) (Lit_Comma ',') (ACPI_EXPORT_SYMBOL)} {(-I)} 
                  {(DEFINE_TRACE) (Lit_Comma ',') (EXPORT_TRACEPOINT_SYMBOL) (Lit_Comma ',') 
                    (EXPORT_TRACEPOINT_SYMBOL_GPL)
                  } {(-I)} {(static) (Lit_Comma ',') (const)} {(--extra) (Lit_Other '=') (Lit_Other '+') (f)} 
                  {(--c-kinds) (Lit_Other '=') (Lit_Other '+') (px)} {(--langmap) (Lit_Other '=') (c) (Lit_Other ':') (Lit_Other '+') (.h)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name regex>
                        bracket_op: (WholeArray op_id:Lit_At)
                        spids: [1604 1609]
                      )
                    )
                  }
                )
              ]
              negated: False
            )
            (C {(setup_regex)} {(exuberant)} {(kconfig)})
            (Pipeline
              children: [
                (C {(all_kconfigs)})
                (C {(xargs)} {($ VSub_Number '$1')} {(-a)} {(--langdef) (Lit_Other '=') (kconfig)} 
                  {(--language-force) (Lit_Other '=') (kconfig)} {(DQ (BracedVarSub token:<VSub_Name regex> bracket_op:(WholeArray op_id:Lit_At) spids:[16421647]))}
                )
              ]
              negated: False
            )
          ]
          spids: [1451]
        )
      spids: [1447 1450]
    )
    (FuncDef
      name: emacs
      body: 
        (BraceGroup
          children: [
            (C {(setup_regex)} {(emacs)} {(asm)} {(c)})
            (Pipeline
              children: [
                (C {(all_target_sources)})
                (C {(xargs)} {($ VSub_Number '$1')} {(-a)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name regex>
                        bracket_op: (WholeArray op_id:Lit_At)
                        spids: [1681 1686]
                      )
                    )
                  }
                )
              ]
              negated: False
            )
            (C {(setup_regex)} {(emacs)} {(kconfig)})
            (Pipeline
              children: [
                (C {(all_kconfigs)})
                (C {(xargs)} {($ VSub_Number '$1')} {(-a)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name regex>
                        bracket_op: (WholeArray op_id:Lit_At)
                        spids: [1709 1714]
                      )
                    )
                  }
                )
              ]
              negated: False
            )
          ]
          spids: [1658]
        )
      spids: [1654 1657]
    )
    (FuncDef
      name: xtags
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (SimpleCommand
                              words: [{($ VSub_Number '$1')} {(--version)}]
                              redirects: [
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: 2
                                  arg_word: {(1)}
                                  spids: [1733]
                                )
                              ]
                            )
                            (C {(grep)} {(-iq)} {(exuberant)})
                          ]
                          negated: False
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(exuberant)} {($ VSub_Number '$1')})]
                  spids: [-1 1745]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (SimpleCommand
                              words: [{($ VSub_Number '$1')} {(--version)}]
                              redirects: [
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: 2
                                  arg_word: {(1)}
                                  spids: [1759]
                                )
                              ]
                            )
                            (C {(grep)} {(-iq)} {(emacs)})
                          ]
                          negated: False
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(emacs)} {($ VSub_Number '$1')})]
                  spids: [1753 1771]
                )
              ]
              else_action: [
                (Pipeline
                  children: [(C {(all_target_sources)}) (C {(xargs)} {($ VSub_Number '$1')} {(-a)})]
                  negated: False
                )
              ]
              spids: [1779 1793]
            )
          ]
          spids: [1724]
        )
      spids: [1720 1723]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ (${ VSub_Name ARCH))} {(Lit_Other '=')} {(DQ (um))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$SUBARCH'))} {(Lit_Other '=')} 
                          {(DQ (i386))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:archinclude)
                          op: Equal
                          rhs: {(x86)}
                          spids: [1843]
                        )
                      ]
                      spids: [1843]
                    )
                  ]
                  spids: [-1 1840]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$SUBARCH'))} {(Lit_Other '=')} 
                          {(DQ (x86_64))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:archinclude)
                          op: Equal
                          rhs: {(x86)}
                          spids: [1867]
                        )
                      ]
                      spids: [1867]
                    )
                  ]
                  spids: [1847 1864]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:archinclude)
                      op: Equal
                      rhs: {(${ VSub_Name SUBARCH)}
                      spids: [1874]
                    )
                  ]
                  spids: [1874]
                )
              ]
              spids: [1871 1880]
            )
          ]
          spids: [-1 1820]
        )
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ (${ VSub_Name SRCARCH))} {(Lit_Other '=')} {(DQ (arm))} {(-a)} 
                  {(DQ (${ VSub_Name SUBARCH))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:subarchdir)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(find)} 
                                    {(${ VSub_Name tree) (arch/) ($ VSub_Name '$SRCARCH') (/)} {(-name)} {(DQ ('mach-*'))} {(-type)} {(d)} {(-o)} {(-name)} {(DQ ('plat-*'))} {(-type)} {(d)}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [1919 1952]
                          )
                        }
                      spids: [1918]
                    )
                  ]
                  spids: [1918]
                )
              terminator: <Op_Semi ';'>
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$subarchdir')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(DQ ($ VSub_Name '$i'))}
                      arms: [
                        (case_arm
                          pat_list: [{(Lit_Other '*') (DQ (mach-)) (${ VSub_Name SUBARCH)}]
                          spids: [1977 1984 1987 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*') (DQ (plat-)) (${ VSub_Name SUBARCH)}]
                          spids: [1990 1997 2000 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:subarchprune)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ($ VSub_Name '$subarchprune') (' ') 
                                        ('\t\t\t\t\t\t-wholename ') ($ VSub_Name '$i') (' -prune -o')
                                      )
                                    }
                                  spids: [2007]
                                )
                              ]
                              spids: [2007]
                            )
                          ]
                          spids: [2003 2004 2018 -1]
                        )
                      ]
                      spids: [1968 1974 2021]
                    )
                  ]
                  spids: [1965 2024]
                )
              spids: [1961 1963]
            )
          ]
          spids: [1882 1915]
        )
      ]
      spids: [-1 2026]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:remove_structs) op:Equal rhs:{(SQ )} spids:[2029])]
      spids: [2029]
    )
    (Case
      to_match: {(DQ ($ VSub_Number '$1'))}
      arms: [
        (case_arm
          pat_list: [{(DQ (cscope))}]
          action: [(C {(docscope)})]
          spids: [2041 2043 2049 -1]
        )
        (case_arm pat_list:[{(DQ (gtags))}] action:[(C {(dogtags)})] spids:[205420562062-1])
        (case_arm
          pat_list: [{(DQ (tags))}]
          action: [
            (C {(rm)} {(-f)} {(tags)})
            (C {(xtags)} {(ctags)})
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:remove_structs) op:Equal rhs:{(y)} spids:[2084])]
              spids: [2084]
            )
          ]
          spids: [2067 2069 2088 -1]
        )
        (case_arm
          pat_list: [{(DQ (TAGS))}]
          action: [
            (C {(rm)} {(-f)} {(TAGS)})
            (C {(xtags)} {(etags)})
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:remove_structs) op:Equal rhs:{(y)} spids:[2110])]
              spids: [2110]
            )
          ]
          spids: [2093 2095 2114 -1]
        )
      ]
      spids: [2031 2037 2116]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$remove_structs'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (SimpleCommand
              words: [
                {(sed)}
                {(-i)}
                {(-e)}
                {(SQ <'/^\\([a-zA-Z_][a-zA-Z0-9_]*\\)\\t.*\\t\\/\\^struct \\1;.*\\$\\/;"\\tx$/d'>)}
                {($ VSub_Number '$1')}
              ]
              more_env: [(env_pair name:LANG val:{(C)} spids:[2138])]
            )
          ]
          spids: [-1 2135]
        )
      ]
      spids: [-1 2153]
    )
  ]
)