(command.CommandList
  children: [
    (C {<set>} {<-e>})
    (command.ShFunction
      name: do_command
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} 
                              {(${ Id.VSub_Name srctree) <'/arch/'> ($ Id.VSub_Number '$2') 
                                <'/include/asm/Kbuild'>
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<make>} {<Id.Lit_VarLike 'ARCH='> ($ Id.VSub_Number '$2')} 
                      {<Id.Lit_VarLike 'KBUILD_HEADERS='> ($ Id.VSub_Number '$1')} {<headers_> ($ Id.VSub_Number '$1')}
                    )
                  ]
                  spids: [22 38]
                )
              ]
              else_action: [
                (C {<printf>} {(DQ <'Ignoring arch: %s'> <Id.Lit_BadBackslash '\\'> <n>)} 
                  {(${ Id.VSub_Name arch)}
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:archs)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name HDR_ARCH_LIST>
                suffix_op: 
                  (suffix_op.Unary
                    tok: <Id.VTest_ColonHyphen ':-'>
                    arg_word: 
                      {
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<ls>} {(${ Id.VSub_Name srctree) <'/arch'>})
                        )
                      }
                  )
              )
            }
          spids: [74]
        )
      ]
    )
    (command.ForEach
      iter_name: arch
      iter_words: [{(${ Id.VSub_Name archs)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {(${ Id.VSub_Name arch)}
              arms: [
                (case_arm pat_list:[{<um>}] spids:[112 113 119 -1])
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-d>} 
                                      {(${ Id.VSub_Name srctree) <'/arch/'> (${ Id.VSub_Name arch)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<do_command>} {($ Id.VSub_Number '$1')} {(${ Id.VSub_Name arch)})
                          ]
                          spids: [126 143]
                        )
                      ]
                    )
                  ]
                  spids: [122 123 158 -1]
                )
              ]
            )
          ]
        )
    )
  ]
)