(command.CommandList
  children: [
    (C {(Id.KW_Set set)} {(-e)})
    (command.ShFunction
      name: info
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name quiet))} 
                          {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (silent_))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:118)
                    )
                  ]
                  action: [
                    (C {(printf)} {(DQ ('  %-7s %s') (Id.Lit_Other '\\') (n))} {(${ Id.VSub_Number 1)} 
                      {(${ Id.VSub_Number 2)}
                    )
                  ]
                  spids: [100 120]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: modpost_link
      body: 
        (command.BraceGroup
          children: [
            (C {(${ Id.VSub_Name LD)} {(${ Id.VSub_Name LDFLAGS)} {(-r)} {(-o)} {(${ Id.VSub_Number 1)} 
              {(${ Id.VSub_Name KBUILD_VMLINUX_INIT)} {(--start-group)} {(${ Id.VSub_Name KBUILD_VMLINUX_MAIN)} {(--end-group)}
            )
          ]
        )
    )
    (command.ShFunction
      name: vmlinux_link
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'lds=') (DQ (${ Id.VSub_Name objtree) (/) (${ Id.VSub_Name KBUILD_LDS))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name SRCARCH))} 
                          {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (um))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:240)
                    )
                  ]
                  action: [
                    (C {(${ Id.VSub_Name LD)} {(${ Id.VSub_Name LDFLAGS)} 
                      {(${ Id.VSub_Name LDFLAGS_vmlinux)} {(-o)} {(${ Id.VSub_Number 2)} {(-T)} {(${ Id.VSub_Name lds)} {(${ Id.VSub_Name KBUILD_VMLINUX_INIT)} 
                      {(--start-group)} {(${ Id.VSub_Name KBUILD_VMLINUX_MAIN)} {(--end-group)} {(${ Id.VSub_Number 1)}
                    )
                  ]
                  spids: [222 242]
                )
              ]
              else_action: [
                (C {(${ Id.VSub_Name CC)} {(${ Id.VSub_Name CFLAGS_vmlinux)} {(-o)} 
                  {(${ Id.VSub_Number 2)} {(-Wl) (Id.Lit_Comma ',') (-T) (Id.Lit_Comma ',') (${ Id.VSub_Name lds)} 
                  {(${ Id.VSub_Name KBUILD_VMLINUX_INIT)} {(-Wl) (Id.Lit_Comma ',') (--start-group)} {(${ Id.VSub_Name KBUILD_VMLINUX_MAIN)} 
                  {(-Wl) (Id.Lit_Comma ',') (--end-group)} {(-lutil)} {(-lrt)} {(-lpthread)} {(${ Id.VSub_Number 1)}
                )
                (C {(rm)} {(-f)} {(linux)})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: kallsyms
      body: 
        (command.BraceGroup
          children: [
            (C {(info)} {(KSYM)} {(${ Id.VSub_Number 2)})
            (command.Sentence
              child: (C {(local)} {(kallsymopt)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:387)
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {(DQ (${ Id.VSub_Name CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:404)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:kallsymopt)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name kallsymopt) (' --symbol-prefix=_'))}
                          spids: [409]
                        )
                      ]
                    )
                  ]
                  spids: [391 406]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name CONFIG_KALLSYMS_ALL))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:435)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:kallsymopt)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name kallsymopt) (' --all-symbols'))}
                          spids: [440]
                        )
                      ]
                    )
                  ]
                  spids: [422 437]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {(DQ (${ Id.VSub_Name CONFIG_KALLSYMS_ABSOLUTE_PERCPU))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:466)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:kallsymopt)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name kallsymopt) (' --absolute-percpu'))}
                          spids: [471]
                        )
                      ]
                    )
                  ]
                  spids: [453 468]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {(DQ (${ Id.VSub_Name CONFIG_KALLSYMS_BASE_RELATIVE))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:497)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:kallsymopt)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name kallsymopt) (' --base-relative'))}
                          spids: [502]
                        )
                      ]
                    )
                  ]
                  spids: [484 499]
                )
              ]
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'aflags=') 
                (DQ (${ Id.VSub_Name KBUILD_AFLAGS) (' ') (${ Id.VSub_Name KBUILD_AFLAGS_KERNEL) 
                  ('               ') ('\t\t      ') (${ Id.VSub_Name NOSTDINC_FLAGS) (' ') (${ Id.VSub_Name LINUXINCLUDE) (' ') 
                  (${ Id.VSub_Name KBUILD_CPPFLAGS)
                )
              }
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'afile=') 
                (DQ 
                  (command_sub
                    left_token: (Token id:Id.Left_Backtick val:'`' span_id:548)
                    command_list: 
                      (command.CommandList
                        children: [(C {(basename)} {(${ Id.VSub_Number 2)} {(.o)})]
                      )
                  ) (.S)
                )
              }
            )
            (command.Pipeline
              children: [
                (C {(${ Id.VSub_Name NM)} {(-n)} {(${ Id.VSub_Number 1)})
                (command.Simple
                  words: [{(scripts/kallsyms)} {(${ Id.VSub_Name kallsymopt)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:582)
                      fd: -1
                      arg_word: {(${ Id.VSub_Name afile)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(${ Id.VSub_Name CC)} {(${ Id.VSub_Name aflags)} {(-c)} {(-o)} {(${ Id.VSub_Number 2)} 
              {(${ Id.VSub_Name afile)}
            )
          ]
        )
    )
    (command.ShFunction
      name: mksysmap
      body: 
        (command.BraceGroup
          children: [
            (C {(${ Id.VSub_Name CONFIG_SHELL)} {(DQ (${ Id.VSub_Name srctree) (/scripts/mksysmap))} 
              {(${ Id.VSub_Number 1)} {(${ Id.VSub_Number 2)}
            )
          ]
        )
    )
    (command.ShFunction
      name: sortextable
      body: 
        (command.BraceGroup
          children: [(C {(${ Id.VSub_Name objtree) (/scripts/sortextable)} {(${ Id.VSub_Number 1)})]
        )
    )
    (command.ShFunction
      name: cleanup
      body: 
        (command.BraceGroup
          children: [
            (C {(rm)} {(-f)} {(.old_version)})
            (C {(rm)} {(-f)} {(.tmp_System.map)})
            (C {(rm)} {(-f)} {(.tmp_kallsyms) (Id.Lit_Star '*')})
            (C {(rm)} {(-f)} {(.tmp_version)})
            (C {(rm)} {(-f)} {(.tmp_vmlinux) (Id.Lit_Star '*')})
            (C {(rm)} {(-f)} {(System.map)})
            (C {(rm)} {(-f)} {(vmlinux)})
            (C {(rm)} {(-f)} {(vmlinux.o)})
          ]
        )
    )
    (command.ShFunction
      name: on_exit
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-ne)} {(0)} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:754)
                    )
                  ]
                  action: [(C {(cleanup)})]
                  spids: [743 756]
                )
              ]
            )
          ]
        )
    )
    (C {(trap)} {(on_exit)} {(EXIT)})
    (command.ShFunction
      name: on_signals
      body: 
        (command.BraceGroup
          children: [
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:780)
              arg_word: {(1)}
            )
          ]
        )
    )
    (C {(trap)} {(on_signals)} {(HUP)} {(INT)} {(QUIT)} {(TERM)})
    (command.Case
      to_match: {(DQ (${ Id.VSub_Name KBUILD_VERBOSE))}
      arms: [
        (case_arm
          pat_list: [{(Id.Lit_Star '*') (1) (Id.Lit_Star '*')}]
          action: [(C {(Id.KW_Set set)} {(-x)})]
          spids: [818 821 829 -1]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_Number '$1'))} {(Id.Lit_Equals '=')} 
                  {(DQ (clean))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:849)
            )
          ]
          action: [
            (C {(cleanup)})
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:857)
              arg_word: {(0)}
            )
          ]
          spids: [834 851]
        )
      ]
    )
    (command.Case
      to_match: {(DQ (${ Id.VSub_Name KCONFIG_CONFIG))}
      arms: [
        (case_arm
          pat_list: [{(Id.Lit_Star '*') (/) (Id.Lit_Star '*')}]
          action: [(C {(.)} {(DQ (${ Id.VSub_Name KCONFIG_CONFIG))})]
          spids: [877 880 892 -1]
        )
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [(C {(.)} {(DQ (./) (${ Id.VSub_Name KCONFIG_CONFIG))})]
          spids: [894 895 -1 911]
        )
      ]
    )
    (C {(info)} {(LD)} {(vmlinux.o)})
    (C {(modpost_link)} {(vmlinux.o)})
    (C {(${ Id.VSub_Name MAKE)} {(-f)} {(DQ (${ Id.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 {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-r)} {(.version)} 
                      {(Id.Lit_RBracket ']')}
                    )
                  terminator: (Token id:Id.Op_Semi val:';' span_id:967)
                )
              ]
              action: [
                (command.Sentence
                  child: (C {(rm)} {(-f)} {(.version)})
                  terminator: (Token id:Id.Op_Semi val:';' span_id:977)
                )
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [{(echo)} {(1)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:984)
                          fd: -1
                          arg_word: {(.version)}
                        )
                      ]
                    )
                  terminator: (Token id:Id.Op_Semi val:';' span_id:986)
                )
              ]
              spids: [956 969]
            )
          ]
          else_action: [
            (command.Sentence
              child: (C {(mv)} {(.version)} {(.old_version)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:996)
            )
            (command.Sentence
              child: 
                (command.Simple
                  words: [
                    {(expr)}
                    {(0) 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1002)
                        command_list: (command.CommandList children:[(C {(cat)} {(.old_version)})])
                      )
                    }
                    {(Id.Lit_Other '+')}
                    {(1)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:1012)
                      fd: -1
                      arg_word: {(.version)}
                    )
                  ]
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1014)
            )
          ]
        )
      terminator: (Token id:Id.Op_Semi val:';' span_id:1017)
    )
    (C {(${ Id.VSub_Name MAKE)} {(-f)} {(DQ (${ Id.VSub_Name srctree) (/scripts/Makefile.build))} 
      {(Id.Lit_VarLike 'obj=') (init)} {(Id.Lit_VarLike 'GCC_PLUGINS_CFLAGS=') (DQ (${ Id.VSub_Name GCC_PLUGINS_CFLAGS))}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:kallsymso)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [1047]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:kallsyms_vmlinux)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [1051]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name CONFIG_KALLSYMS))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1068)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:kallsymso)
                  op: assign_op.Equal
                  rhs: {(.tmp_kallsyms2.o)}
                  spids: [1147]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:kallsyms_vmlinux)
                  op: assign_op.Equal
                  rhs: {(.tmp_vmlinux2)}
                  spids: [1151]
                )
              ]
            )
            (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 {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name KALLSYMS_EXTRA_PASS))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1212)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:kallsymso)
                          op: assign_op.Equal
                          rhs: {(.tmp_kallsyms3.o)}
                          spids: [1217]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:kallsyms_vmlinux)
                          op: assign_op.Equal
                          rhs: {(.tmp_vmlinux3)}
                          spids: [1221]
                        )
                      ]
                    )
                    (C {(vmlinux_link)} {(.tmp_kallsyms2.o)} {(.tmp_vmlinux3)})
                    (C {(kallsyms)} {(.tmp_vmlinux3)} {(.tmp_kallsyms3.o)})
                  ]
                  spids: [1199 1214]
                )
              ]
            )
          ]
          spids: [1055 1070]
        )
      ]
    )
    (C {(info)} {(LD)} {(vmlinux)})
    (C {(vmlinux_link)} {(DQ (${ Id.VSub_Name kallsymso))} {(vmlinux)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name CONFIG_BUILDTIME_EXTABLE_SORT))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1276)
            )
          ]
          action: [(C {(info)} {(SORTEX)} {(vmlinux)}) (C {(sortextable)} {(vmlinux)})]
          spids: [1263 1278]
        )
      ]
    )
    (C {(info)} {(SYSMAP)} {(System.map)})
    (C {(mksysmap)} {(vmlinux)} {(System.map)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name CONFIG_KALLSYMS))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1324)
            )
          ]
          action: [
            (C {(mksysmap)} {(${ Id.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: (Token id:Id.Op_Semi val:';' span_id:1350)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(echo)} {(Inconsistent)} {(kallsyms)} {(data)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1357)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {(echo)}
                        {(Try)}
                        {(DQ ('make KALLSYMS_EXTRA_PASS=1'))}
                        {(as)}
                        {(a)}
                        {(workaround)}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1369)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:1385)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [1339 1352]
                )
              ]
            )
          ]
          spids: [1311 1326]
        )
      ]
    )
    (C {(rm)} {(-f)} {(.old_version)})
  ]
)