(command.CommandList
  children: [
    (C {(set)} {(-e)})
    (command.FuncDef
      name: info
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name quiet))} {(KW_Bang '!') (Lit_Other '=')} 
                          {(DQ (silent_))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(printf)} {(DQ ('  %-7s %s') (Lit_Other '\\') (n))} {(${ VSub_Number 1)} 
                      {(${ VSub_Number 2)}
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.FuncDef
      name: modpost_link
      body: 
        (command.BraceGroup
          children: [
            (C {(${ VSub_Name LD)} {(${ VSub_Name LDFLAGS)} {(-r)} {(-o)} {(${ VSub_Number 1)} 
              {(${ VSub_Name KBUILD_VMLINUX_INIT)} {(--start-group)} {(${ VSub_Name KBUILD_VMLINUX_MAIN)} {(--end-group)}
            )
          ]
        )
    )
    (command.FuncDef
      name: vmlinux_link
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:lds)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name objtree) (/) (${ VSub_Name KBUILD_LDS))}
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name SRCARCH))} 
                          {(KW_Bang '!') (Lit_Other '=')} {(DQ (um))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(${ VSub_Name LD)} {(${ VSub_Name LDFLAGS)} {(${ VSub_Name LDFLAGS_vmlinux)} 
                      {(-o)} {(${ VSub_Number 2)} {(-T)} {(${ VSub_Name lds)} {(${ VSub_Name KBUILD_VMLINUX_INIT)} {(--start-group)} 
                      {(${ VSub_Name KBUILD_VMLINUX_MAIN)} {(--end-group)} {(${ VSub_Number 1)}
                    )
                  ]
                )
              ]
              else_action: [
                (C {(${ VSub_Name CC)} {(${ VSub_Name CFLAGS_vmlinux)} {(-o)} {(${ VSub_Number 2)} 
                  {(-Wl) (Lit_Comma ',') (-T) (Lit_Comma ',') (${ VSub_Name lds)} {(${ VSub_Name KBUILD_VMLINUX_INIT)} {(-Wl) (Lit_Comma ',') (--start-group)} 
                  {(${ VSub_Name KBUILD_VMLINUX_MAIN)} {(-Wl) (Lit_Comma ',') (--end-group)} {(-lutil)} {(-lrt)} {(-lpthread)} {(${ VSub_Number 1)}
                )
                (C {(rm)} {(-f)} {(linux)})
              ]
            )
          ]
        )
    )
    (command.FuncDef
      name: kallsyms
      body: 
        (command.BraceGroup
          children: [
            (C {(info)} {(KSYM)} {(${ VSub_Number 2)})
            (command.Sentence
              child: 
                (command.Assignment
                  keyword: Assign_Local
                  pairs: [(assign_pair lhs:(lhs_expr.LhsName name:kallsymopt) op:Equal)]
                )
              terminator: <Op_Semi ';'>
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} 
                          {(DQ (${ VSub_Name CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:kallsymopt)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name kallsymopt) (' --symbol-prefix=_'))}
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name CONFIG_KALLSYMS_ALL))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:kallsymopt)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name kallsymopt) (' --all-symbols'))}
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name CONFIG_KALLSYMS_ABSOLUTE_PERCPU))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:kallsymopt)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name kallsymopt) (' --absolute-percpu'))}
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name CONFIG_KALLSYMS_BASE_RELATIVE))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:kallsymopt)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name kallsymopt) (' --base-relative'))}
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:aflags)
                  op: Equal
                  rhs: 
                    {
                      (DQ (${ VSub_Name KBUILD_AFLAGS) (' ') (${ VSub_Name KBUILD_AFLAGS_KERNEL) 
                        ('               ') ('\t\t      ') (${ VSub_Name NOSTDINC_FLAGS) (' ') (${ VSub_Name LINUXINCLUDE) (' ') 
                        (${ VSub_Name KBUILD_CPPFLAGS)
                      )
                    }
                )
              ]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:afile)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (word_part.CommandSubPart
                          command_list: 
                            (command.CommandList
                              children: [(C {(basename)} {(${ VSub_Number 2)} {(.o)})]
                            )
                          left_token: <Left_Backtick '`'>
                        ) (.S)
                      )
                    }
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {(${ VSub_Name NM)} {(-n)} {(${ VSub_Number 1)})
                (command.SimpleCommand
                  words: [{(scripts/kallsyms)} {(${ VSub_Name kallsymopt)}]
                  redirects: [
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(${ VSub_Name afile)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(${ VSub_Name CC)} {(${ VSub_Name aflags)} {(-c)} {(-o)} {(${ VSub_Number 2)} 
              {(${ VSub_Name afile)}
            )
          ]
        )
    )
    (command.FuncDef
      name: mksysmap
      body: 
        (command.BraceGroup
          children: [
            (C {(${ VSub_Name CONFIG_SHELL)} {(DQ (${ VSub_Name srctree) (/scripts/mksysmap))} 
              {(${ VSub_Number 1)} {(${ VSub_Number 2)}
            )
          ]
        )
    )
    (command.FuncDef
      name: sortextable
      body: 
        (command.BraceGroup
          children: [(C {(${ VSub_Name objtree) (/scripts/sortextable)} {(${ VSub_Number 1)})]
        )
    )
    (command.FuncDef
      name: cleanup
      body: 
        (command.BraceGroup
          children: [
            (C {(rm)} {(-f)} {(.old_version)})
            (C {(rm)} {(-f)} {(.tmp_System.map)})
            (C {(rm)} {(-f)} {(.tmp_kallsyms) (Lit_Other '*')})
            (C {(rm)} {(-f)} {(.tmp_version)})
            (C {(rm)} {(-f)} {(.tmp_vmlinux) (Lit_Other '*')})
            (C {(rm)} {(-f)} {(System.map)})
            (C {(rm)} {(-f)} {(vmlinux)})
            (C {(rm)} {(-f)} {(vmlinux.o)})
          ]
        )
    )
    (command.FuncDef
      name: on_exit
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cleanup)})]
                )
              ]
            )
          ]
        )
    )
    (C {(trap)} {(on_exit)} {(EXIT)})
    (command.FuncDef
      name: on_signals
      body: 
        (command.BraceGroup
          children: [(command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})]
        )
    )
    (C {(trap)} {(on_signals)} {(HUP)} {(INT)} {(QUIT)} {(TERM)})
    (command.Case
      to_match: {(DQ (${ VSub_Name KBUILD_VERBOSE))}
      arms: [(case_arm pat_list:[{(Lit_Other '*') (1) (Lit_Other '*')}] action:[(C {(set)} {(-x)})])]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (clean))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(cleanup)}) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})]
        )
      ]
    )
    (command.Case
      to_match: {(DQ (${ VSub_Name KCONFIG_CONFIG))}
      arms: [
        (case_arm
          pat_list: [{(Lit_Other '*') (/) (Lit_Other '*')}]
          action: [(C {(.)} {(DQ (${ VSub_Name KCONFIG_CONFIG))})]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [(C {(.)} {(DQ (./) (${ VSub_Name KCONFIG_CONFIG))})]
        )
      ]
    )
    (C {(info)} {(LD)} {(vmlinux.o)})
    (C {(modpost_link)} {(vmlinux.o)})
    (C {(${ VSub_Name MAKE)} {(-f)} {(DQ (${ VSub_Name srctree) (/scripts/Makefile.modpost))} 
      {(vmlinux.o)}
    )
    (C {(info)} {(GEN)} {(.version)})
    (command.Sentence
      child: 
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-r)} {(.version)} {(Lit_Other ']')})
                  terminator: <Op_Semi ';'>
                )
              ]
              action: [
                (command.Sentence
                  child: (C {(rm)} {(-f)} {(.version)})
                  terminator: <Op_Semi ';'>
                )
                (command.Sentence
                  child: 
                    (command.SimpleCommand
                      words: [{(echo)} {(1)}]
                      redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(.version)})]
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
            )
          ]
          else_action: [
            (command.Sentence
              child: (C {(mv)} {(.version)} {(.old_version)})
              terminator: <Op_Semi ';'>
            )
            (command.Sentence
              child: 
                (command.SimpleCommand
                  words: [
                    {(expr)}
                    {(0) 
                      (word_part.CommandSubPart
                        command_list: (command.CommandList children:[(C {(cat)} {(.old_version)})])
                        left_token: <Left_CommandSub '$('>
                      )
                    }
                    {(Lit_Other '+')}
                    {(1)}
                  ]
                  redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(.version)})]
                )
              terminator: <Op_Semi ';'>
            )
          ]
        )
      terminator: <Op_Semi ';'>
    )
    (C {(${ VSub_Name MAKE)} {(-f)} {(DQ (${ VSub_Name srctree) (/scripts/Makefile.build))} 
      {(Lit_VarLike 'obj=') (init)} {(Lit_VarLike 'GCC_PLUGINS_CFLAGS=') (DQ (${ VSub_Name GCC_PLUGINS_CFLAGS))}
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:kallsymso) op:Equal rhs:{(DQ )})]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:kallsyms_vmlinux) op:Equal rhs:{(DQ )})]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name CONFIG_KALLSYMS))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:kallsymso)
                  op: Equal
                  rhs: {(.tmp_kallsyms2.o)}
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:kallsyms_vmlinux)
                  op: Equal
                  rhs: {(.tmp_vmlinux2)}
                )
              ]
            )
            (C {(vmlinux_link)} {(DQ )} {(.tmp_vmlinux1)})
            (C {(kallsyms)} {(.tmp_vmlinux1)} {(.tmp_kallsyms1.o)})
            (C {(vmlinux_link)} {(.tmp_kallsyms1.o)} {(.tmp_vmlinux2)})
            (C {(kallsyms)} {(.tmp_vmlinux2)} {(.tmp_kallsyms2.o)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name KALLSYMS_EXTRA_PASS))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:kallsymso)
                          op: Equal
                          rhs: {(.tmp_kallsyms3.o)}
                        )
                      ]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:kallsyms_vmlinux)
                          op: Equal
                          rhs: {(.tmp_vmlinux3)}
                        )
                      ]
                    )
                    (C {(vmlinux_link)} {(.tmp_kallsyms2.o)} {(.tmp_vmlinux3)})
                    (C {(kallsyms)} {(.tmp_vmlinux3)} {(.tmp_kallsyms3.o)})
                  ]
                )
              ]
            )
          ]
        )
      ]
    )
    (C {(info)} {(LD)} {(vmlinux)})
    (C {(vmlinux_link)} {(DQ (${ VSub_Name kallsymso))} {(vmlinux)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name CONFIG_BUILDTIME_EXTABLE_SORT))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(info)} {(SORTEX)} {(vmlinux)}) (C {(sortextable)} {(vmlinux)})]
        )
      ]
    )
    (C {(info)} {(SYSMAP)} {(System.map)})
    (C {(mksysmap)} {(vmlinux)} {(System.map)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name CONFIG_KALLSYMS))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(mksysmap)} {(${ VSub_Name kallsyms_vmlinux)} {(.tmp_System.map)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [(C {(cmp)} {(-s)} {(System.map)} {(.tmp_System.map)})]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.SimpleCommand
                      words: [{(echo)} {(Inconsistent)} {(kallsyms)} {(data)}]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (command.SimpleCommand
                      words: [
                        {(echo)}
                        {(Try)}
                        {(DQ ('make KALLSYMS_EXTRA_PASS=1'))}
                        {(as)}
                        {(a)}
                        {(workaround)}
                      ]
                      redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Exit exit>
                      arg_word: {(1)}
                    )
                  ]
                )
              ]
            )
          ]
        )
      ]
    )
    (C {(rm)} {(-f)} {(.old_version)})
  ]
)