(command.CommandList
  children: [
    (C {<Id.KW_Set set>} {<-e>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:action)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [138]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:srcdir)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$2')}
          spids: [141]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:cgen)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number '$3'))}
          spids: [144]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:cgendir)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$4')}
          spids: [149]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:cgenflags)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$5')}
          spids: [152]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:arch)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$6')}
          spids: [155]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:prefix)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$7')}
          spids: [158]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:archfile)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$8')}
          spids: [161]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:opcfile)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$9')}
          spids: [164]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:options)
              op: assign_op.Equal
              rhs: {($ Id.VSub_Number '$9')}
              spids: [171]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:extrafiles)
              op: assign_op.Equal
              rhs: {($ Id.VSub_Number '$9')}
              spids: [185]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:rootdir)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name srcdir) </..>}
          spids: [189]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:lowercase)
          op: assign_op.Equal
          rhs: {(SQ <abcdefghijklmnopqrstuvwxyz>)}
          spids: [206]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:uppercase)
          op: assign_op.Equal
          rhs: {(SQ <ABCDEFGHIJKLMNOPQRSTUVWXYZ>)}
          spids: [211]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ARCH)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (C {<echo>} {(${ Id.VSub_Name arch)})
                          (C {<tr>} {(DQ (${ Id.VSub_Name lowercase))} {(DQ (${ Id.VSub_Name uppercase))})
                        ]
                        negated: F
                      )
                    ]
                  )
              )
            }
          spids: [216]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tmp)
          op: assign_op.Equal
          rhs: {<tmp-> ($ Id.VSub_Dollar '$$')}
          spids: [247]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:extrafile_args)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [252]
        )
      ]
    )
    (command.ForEach
      iter_name: ef
      iter_words: [{<..>} {($ Id.VSub_DollarName '$extrafiles')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$ef')}
              arms: [
                (case_arm pat_list:[{<..>}] spids:[276 277 279 -1])
                (case_arm
                  pat_list: [{<opinst>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:extrafile_args)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'-Q '> (${ Id.VSub_Name tmp) <'-opinst.c1 '> 
                                ($ Id.VSub_DollarName '$extrafile_args')
                              )
                            }
                          spids: [285]
                        )
                      ]
                    )
                  ]
                  spids: [282 283 295 -1]
                )
              ]
            )
          ]
        )
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$action')}
      arms: [
        (case_arm
          pat_list: [{<opcodes>}]
          action: [
            (C {<rm>} {<-f>} {(${ Id.VSub_Name tmp) <-desc.h>} {(${ Id.VSub_Name tmp) <-desc.h1>})
            (C {<rm>} {<-f>} {(${ Id.VSub_Name tmp) <-desc.c>} {(${ Id.VSub_Name tmp) <-desc.c1>})
            (C {<rm>} {<-f>} {(${ Id.VSub_Name tmp) <-opc.h>} {(${ Id.VSub_Name tmp) <-opc.h1>})
            (C {<rm>} {<-f>} {(${ Id.VSub_Name tmp) <-opc.c>} {(${ Id.VSub_Name tmp) <-opc.c1>})
            (C {<rm>} {<-f>} {(${ Id.VSub_Name tmp) <-opinst.c>} {(${ Id.VSub_Name tmp) <-opinst.c1>})
            (C {<rm>} {<-f>} {(${ Id.VSub_Name tmp) <-ibld.h>} {(${ Id.VSub_Name tmp) <-ibld.h1>})
            (C {<rm>} {<-f>} {(${ Id.VSub_Name tmp) <-ibld.c>} {(${ Id.VSub_Name tmp) <-ibld.in1>})
            (C {<rm>} {<-f>} {(${ Id.VSub_Name tmp) <-asm.c>} {(${ Id.VSub_Name tmp) <-asm.in1>})
            (C {<rm>} {<-f>} {(${ Id.VSub_Name tmp) <-dis.c>} {(${ Id.VSub_Name tmp) <-dis.in1>})
            (C {(${ Id.VSub_Name cgen)} {(${ Id.VSub_Name cgendir) </cgen-opc.scm>} {<-s>} 
              {(${ Id.VSub_Name cgendir)} {(${ Id.VSub_Name cgenflags)} {<-f>} {(DQ (${ Id.VSub_Name options))} {<-m>} {<all>} {<-a>} 
              {(${ Id.VSub_Name archfile)} {<-OPC>} {(${ Id.VSub_Name opcfile)} {<-H>} {(${ Id.VSub_Name tmp) <-desc.h1>} {<-C>} 
              {(${ Id.VSub_Name tmp) <-desc.c1>} {<-O>} {(${ Id.VSub_Name tmp) <-opc.h1>} {<-P>} {(${ Id.VSub_Name tmp) <-opc.c1>} {<-L>} 
              {(${ Id.VSub_Name tmp) <-ibld.in1>} {<-A>} {(${ Id.VSub_Name tmp) <-asm.in1>} {<-D>} {(${ Id.VSub_Name tmp) <-dis.in1>} 
              {(${ Id.VSub_Name extrafile_args)}
            )
            (command.Simple
              words: [
                {<sed>}
                {<-e>}
                {(DQ <'s/@ARCH@/'> (${ Id.VSub_Name ARCH) </g>)}
                {<-e>}
                {(DQ <'s/@arch@/'> (${ Id.VSub_Name arch) </g>)}
                {<-e>}
                {(SQ <'s/[ \t][ \t]*$//'>)}
              ]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Less '<'>
                  fd: -1
                  arg_word: {(${ Id.VSub_Name tmp) <-desc.h1>}
                )
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {(${ Id.VSub_Name tmp) <-desc.h>}
                )
              ]
            )
            (C {(${ Id.VSub_Name rootdir) </move-if-change>} {(${ Id.VSub_Name tmp) <-desc.h>} 
              {(${ Id.VSub_Name srcdir) </> (${ Id.VSub_Name prefix) <-desc.h>}
            )
            (command.Simple
              words: [
                {<sed>}
                {<-e>}
                {(DQ <'s/@ARCH@/'> (${ Id.VSub_Name ARCH) </g>)}
                {<-e>}
                {(DQ <'s/@arch@/'> (${ Id.VSub_Name arch) </g>)}
                {<-e>}
                {(DQ <'s/@prefix@/'> (${ Id.VSub_Name prefix) </>)}
                {<-e>}
                {(SQ <'s/[ \t][ \t]*$//'>)}
              ]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Less '<'>
                  fd: -1
                  arg_word: {(${ Id.VSub_Name tmp) <-desc.c1>}
                )
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {(${ Id.VSub_Name tmp) <-desc.c>}
                )
              ]
            )
            (C {(${ Id.VSub_Name rootdir) </move-if-change>} {(${ Id.VSub_Name tmp) <-desc.c>} 
              {(${ Id.VSub_Name srcdir) </> (${ Id.VSub_Name prefix) <-desc.c>}
            )
            (command.Simple
              words: [
                {<sed>}
                {<-e>}
                {(DQ <'s/@ARCH@/'> (${ Id.VSub_Name ARCH) </g>)}
                {<-e>}
                {(DQ <'s/@arch@/'> (${ Id.VSub_Name arch) </g>)}
                {<-e>}
                {(SQ <'s/[ \t][ \t]*$//'>)}
              ]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Less '<'>
                  fd: -1
                  arg_word: {(${ Id.VSub_Name tmp) <-opc.h1>}
                )
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {(${ Id.VSub_Name tmp) <-opc.h>}
                )
              ]
            )
            (C {(${ Id.VSub_Name rootdir) </move-if-change>} {(${ Id.VSub_Name tmp) <-opc.h>} 
              {(${ Id.VSub_Name srcdir) </> (${ Id.VSub_Name prefix) <-opc.h>}
            )
            (command.Simple
              words: [
                {<sed>}
                {<-e>}
                {(DQ <'s/@ARCH@/'> (${ Id.VSub_Name ARCH) </g>)}
                {<-e>}
                {(DQ <'s/@arch@/'> (${ Id.VSub_Name arch) </g>)}
                {<-e>}
                {(DQ <'s/@prefix@/'> (${ Id.VSub_Name prefix) </>)}
                {<-e>}
                {(SQ <'s/[ \t][ \t]*$//'>)}
              ]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Less '<'>
                  fd: -1
                  arg_word: {(${ Id.VSub_Name tmp) <-opc.c1>}
                )
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {(${ Id.VSub_Name tmp) <-opc.c>}
                )
              ]
            )
            (C {(${ Id.VSub_Name rootdir) </move-if-change>} {(${ Id.VSub_Name tmp) <-opc.c>} 
              {(${ Id.VSub_Name srcdir) </> (${ Id.VSub_Name prefix) <-opc.c>}
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$extrafiles')}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <opinst> <Id.Lit_Star '*'>}]
                  action: [
                    (command.Simple
                      words: [
                        {<sed>}
                        {<-e>}
                        {(DQ <'s/@ARCH@/'> (${ Id.VSub_Name ARCH) </g>)}
                        {<-e>}
                        {(DQ <'s/@arch@/'> (${ Id.VSub_Name arch) </g>)}
                        {<-e>}
                        {(DQ <'s/@prefix@/'> (${ Id.VSub_Name prefix) </>)}
                        {<-e>}
                        {(SQ <'s/[ \t][ \t]*$//'>)}
                      ]
                      redirects: [
                        (redir.Redir
                          op: <Id.Redir_Less '<'>
                          fd: -1
                          arg_word: {(${ Id.VSub_Name tmp) <-opinst.c1>}
                        )
                        (redir.Redir
                          op: <Id.Redir_Great '>'>
                          fd: -1
                          arg_word: {(${ Id.VSub_Name tmp) <-opinst.c>}
                        )
                      ]
                    )
                    (C {(${ Id.VSub_Name rootdir) </move-if-change>} 
                      {(${ Id.VSub_Name tmp) <-opinst.c>} {(${ Id.VSub_Name srcdir) </> (${ Id.VSub_Name prefix) <-opinst.c>}
                    )
                  ]
                  spids: [882 885 964 -1]
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {<cat>} {(${ Id.VSub_Name srcdir) </cgen-ibld.in>} 
                  {(${ Id.VSub_Name tmp) <-ibld.in1>}
                )
                (command.Simple
                  words: [
                    {<sed>}
                    {<-e>}
                    {(DQ <'s/@ARCH@/'> (${ Id.VSub_Name ARCH) </g>)}
                    {<-e>}
                    {(DQ <'s/@arch@/'> (${ Id.VSub_Name arch) </g>)}
                    {<-e>}
                    {(DQ <'s/@prefix@/'> (${ Id.VSub_Name prefix) </>)}
                    {<-e>}
                    {(SQ <'s/[ \t][ \t]*$//'>)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: <Id.Redir_Great '>'>
                      fd: -1
                      arg_word: {(${ Id.VSub_Name tmp) <-ibld.c>}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(${ Id.VSub_Name rootdir) </move-if-change>} {(${ Id.VSub_Name tmp) <-ibld.c>} 
              {(${ Id.VSub_Name srcdir) </> (${ Id.VSub_Name prefix) <-ibld.c>}
            )
            (command.Pipeline
              children: [
                (C {<sed>} {<-e>} {(DQ <'/ -- assembler routines/ r '> (${ Id.VSub_Name tmp) <-asm.in1>)} 
                  {(${ Id.VSub_Name srcdir) </cgen-asm.in>}
                )
                (command.Simple
                  words: [
                    {<sed>}
                    {<-e>}
                    {(DQ <'s/@ARCH@/'> (${ Id.VSub_Name ARCH) </g>)}
                    {<-e>}
                    {(DQ <'s/@arch@/'> (${ Id.VSub_Name arch) </g>)}
                    {<-e>}
                    {(DQ <'s/@prefix@/'> (${ Id.VSub_Name prefix) </>)}
                    {<-e>}
                    {(SQ <'s/[ \t][ \t]*$//'>)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: <Id.Redir_Great '>'>
                      fd: -1
                      arg_word: {(${ Id.VSub_Name tmp) <-asm.c>}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(${ Id.VSub_Name rootdir) </move-if-change>} {(${ Id.VSub_Name tmp) <-asm.c>} 
              {(${ Id.VSub_Name srcdir) </> (${ Id.VSub_Name prefix) <-asm.c>}
            )
            (command.Pipeline
              children: [
                (C {<sed>} {<-e>} 
                  {(DQ <'/ -- disassembler routines/ r '> (${ Id.VSub_Name tmp) <-dis.in1>)} {(${ Id.VSub_Name srcdir) </cgen-dis.in>}
                )
                (command.Simple
                  words: [
                    {<sed>}
                    {<-e>}
                    {(DQ <'s/@ARCH@/'> (${ Id.VSub_Name ARCH) </g>)}
                    {<-e>}
                    {(DQ <'s/@arch@/'> (${ Id.VSub_Name arch) </g>)}
                    {<-e>}
                    {(DQ <'s/@prefix@/'> (${ Id.VSub_Name prefix) </>)}
                    {<-e>}
                    {(SQ <'s/[ \t][ \t]*$//'>)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: <Id.Redir_Great '>'>
                      fd: -1
                      arg_word: {(${ Id.VSub_Name tmp) <-dis.c>}
                    )
                  ]
                )
              ]
              negated: F
            )
            (C {(${ Id.VSub_Name rootdir) </move-if-change>} {(${ Id.VSub_Name tmp) <-dis.c>} 
              {(${ Id.VSub_Name srcdir) </> (${ Id.VSub_Name prefix) <-dis.c>}
            )
            (C {<rm>} {<-f>} {(${ Id.VSub_Name tmp) <-desc.h1>} {(${ Id.VSub_Name tmp) <-desc.c1>})
            (C {<rm>} {<-f>} {(${ Id.VSub_Name tmp) <-opc.h1>} {(${ Id.VSub_Name tmp) <-opc.c1>})
            (C {<rm>} {<-f>} {(${ Id.VSub_Name tmp) <-opinst.c1>})
            (C {<rm>} {<-f>} {(${ Id.VSub_Name tmp) <-ibld.h1>} {(${ Id.VSub_Name tmp) <-ibld.in1>})
            (C {<rm>} {<-f>} {(${ Id.VSub_Name tmp) <-asm.in1>} {(${ Id.VSub_Name tmp) <-dis.in1>})
          ]
          spids: [309 310 1314 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.Simple
              words: [
                {<echo>}
                {(DQ ($ Id.VSub_Number '$0') <': bad action: '> (${ Id.VSub_Name action))}
              ]
              redirects: [(redir.Redir op:<Id.Redir_GreatAnd '>&'> fd:-1 arg_word:{<2>})]
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [1317 1318 1340 -1]
        )
      ]
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)