(command.CommandList
  children: [
    (C {<set>} {<-e>})
    (command.ShFunction
      name: info
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name quiet))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <silent_>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} {(DQ <'  %-7s %s'> <Id.Lit_BadBackslash '\\'> <n>)} 
                      {(${ Id.VSub_Number 1)} {(${ Id.VSub_Number 2)}
                    )
                  ]
                  spids: [100 120]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: modpost_link
      body: 
        (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: 
        (BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'lds='> 
                (DQ (${ Id.VSub_Name objtree) <'/'> (${ Id.VSub_Name KBUILD_LDS))
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name SRCARCH))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <um>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  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: 
        (BraceGroup
          children: [
            (C {<info>} {<KSYM>} {(${ Id.VSub_Number 2)})
            (command.Sentence
              child: (C {<local>} {<kallsymopt>})
              terminator: <Id.Op_Semi _>
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {(DQ (${ Id.VSub_Name CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  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: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {(DQ (${ Id.VSub_Name CONFIG_KALLSYMS_ALL))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  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: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {(DQ (${ Id.VSub_Name CONFIG_KALLSYMS_ABSOLUTE_PERCPU))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  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: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {(DQ (${ Id.VSub_Name CONFIG_KALLSYMS_BASE_RELATIVE))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  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: <Id.Left_Backtick '`'>
                    child: (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
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(${ Id.VSub_Name afile)}
                    )
                  ]
                  do_fork: T
                )
              ]
              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: 
        (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: 
        (BraceGroup
          children: [(C {(${ Id.VSub_Name objtree) <'/scripts/sortextable'>} {(${ Id.VSub_Number 1)})]
        )
    )
    (command.ShFunction
      name: cleanup
      body: 
        (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: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<cleanup>})]
                  spids: [743 756]
                )
              ]
            )
          ]
        )
    )
    (C {<trap>} {<on_exit>} {<EXIT>})
    (command.ShFunction
      name: on_signals
      body: 
        (BraceGroup
          children: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> 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 {<set>} {<-x>})]
          spids: [818 821 829 -1]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='>} 
                      {(DQ <clean>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<cleanup>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> 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: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-r>} {<.version>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [
                (command.Sentence
                  child: (C {<rm>} {<-f>} {<.version>})
                  terminator: <Id.Op_Semi _>
                )
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [{<echo>} {<1>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<.version>}
                        )
                      ]
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              spids: [956 969]
            )
          ]
          else_action: [
            (command.Sentence
              child: (C {<mv>} {<.version>} {<.old_version>})
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.Simple
                  words: [
                    {<expr>}
                    {<0> 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<cat>} {<.old_version>})
                      )
                    }
                    {<Id.Lit_Other '+'>}
                    {<1>}
                  ]
                  redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<.version>})]
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
      terminator: <Id.Op_Semi _>
    )
    (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: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ (${ Id.VSub_Name CONFIG_KALLSYMS))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          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: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {(DQ (${ Id.VSub_Name KALLSYMS_EXTRA_PASS))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  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: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                      {(DQ (${ Id.VSub_Name CONFIG_BUILDTIME_EXTABLE_SORT))} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          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: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ (${ Id.VSub_Name CONFIG_KALLSYMS))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<mksysmap>} {(${ Id.VSub_Name kallsyms_vmlinux)} {<.tmp_System.map>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [(C {<cmp>} {<-s>} {<System.map>} {<.tmp_System.map>})]
                              negated: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {<Inconsistent>} {<kallsyms>} {<Id.KW_Data data>}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.Simple
                      words: [
                        {<echo>}
                        {<Try>}
                        {(DQ <'make KALLSYMS_EXTRA_PASS=1'>)}
                        {<as>}
                        {<a>}
                        {<workaround>}
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1339 1352]
                )
              ]
            )
          ]
          spids: [1311 1326]
        )
      ]
    )
    (C {<rm>} {<-f>} {<.old_version>})
  ]
)