(command.CommandList
  children: [
    (C {<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 '`'>
                child: 
                  (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:extrafile_args)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [244]
        )
      ]
    )
    (command.ForEach
      iter_names: [ef]
      iterable: (for_iter.Words words:[{<..>} {($ Id.VSub_DollarName '$extrafiles')}])
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$ef')}
              arms: [
                (case_arm pat_list:[{<..>}] spids:[268 269 271 -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 tmp-opinst.c1 '> ($ Id.VSub_DollarName '$extrafile_args'))}
                          spids: [277]
                        )
                      ]
                    )
                  ]
                  spids: [274 275 283 -1]
                )
              ]
            )
          ]
        )
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$action')}
      arms: [
        (case_arm
          pat_list: [{<opcodes>}]
          action: [
            (C {<rm>} {<-f>} {<tmp-desc.h>} {<tmp-desc.h1>})
            (C {<rm>} {<-f>} {<tmp-desc.c>} {<tmp-desc.c1>})
            (C {<rm>} {<-f>} {<tmp-opc.h>} {<tmp-opc.h1>})
            (C {<rm>} {<-f>} {<tmp-opc.c>} {<tmp-opc.c1>})
            (C {<rm>} {<-f>} {<tmp-opinst.c>} {<tmp-opinst.c1>})
            (C {<rm>} {<-f>} {<tmp-ibld.h>} {<tmp-ibld.h1>})
            (C {<rm>} {<-f>} {<tmp-ibld.c>} {<tmp-ibld.in1>})
            (C {<rm>} {<-f>} {<tmp-asm.c>} {<tmp-asm.in1>})
            (C {<rm>} {<-f>} {<tmp-dis.c>} {<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>} {<tmp-desc.h1>} {<-C>} {<tmp-desc.c1>} {<-O>} {<tmp-opc.h1>} 
              {<-P>} {<tmp-opc.c1>} {<-L>} {<tmp-ibld.in1>} {<-A>} {<tmp-asm.in1>} {<-D>} {<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'>)}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {<tmp-desc.h1>}
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<tmp-desc.h>}
                )
              ]
              do_fork: T
            )
            (C {(${ Id.VSub_Name rootdir) <'/move-if-change'>} {<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) <'/'>)}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {<tmp-desc.c1>}
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<tmp-desc.c>}
                )
              ]
              do_fork: T
            )
            (C {(${ Id.VSub_Name rootdir) <'/move-if-change'>} {<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'>)}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {<tmp-opc.h1>}
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<tmp-opc.h>}
                )
              ]
              do_fork: T
            )
            (C {(${ Id.VSub_Name rootdir) <'/move-if-change'>} {<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) <'/'>)}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {<tmp-opc.c1>}
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<tmp-opc.c>}
                )
              ]
              do_fork: T
            )
            (C {(${ Id.VSub_Name rootdir) <'/move-if-change'>} {<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) <'/'>)}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {<tmp-opinst.c1>}
                        )
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<tmp-opinst.c>}
                        )
                      ]
                      do_fork: T
                    )
                    (C {(${ Id.VSub_Name rootdir) <'/move-if-change'>} {<tmp-opinst.c>} 
                      {(${ Id.VSub_Name srcdir) <'/'> (${ Id.VSub_Name prefix) <-opinst.c>}
                    )
                  ]
                  spids: [727 730 792 -1]
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {<cat>} {(${ Id.VSub_Name srcdir) <'/cgen-ibld.in'>} {<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) <'/'>)}
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<tmp-ibld.c>}
                    )
                  ]
                  do_fork: T
                )
              ]
              negated: F
            )
            (C {(${ Id.VSub_Name rootdir) <'/move-if-change'>} {<tmp-ibld.c>} 
              {(${ Id.VSub_Name srcdir) <'/'> (${ Id.VSub_Name prefix) <-ibld.c>}
            )
            (command.Pipeline
              children: [
                (C {<sed>} {<-e>} {(DQ <'/ -- assembler routines/ r 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) <'/'>)}
                  ]
                  redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<tmp-asm.c>})]
                  do_fork: T
                )
              ]
              negated: F
            )
            (C {(${ Id.VSub_Name rootdir) <'/move-if-change'>} {<tmp-asm.c>} 
              {(${ Id.VSub_Name srcdir) <'/'> (${ Id.VSub_Name prefix) <-asm.c>}
            )
            (command.Pipeline
              children: [
                (C {<sed>} {<-e>} {(DQ <'/ -- disassembler routines/ r 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) <'/'>)}
                  ]
                  redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<tmp-dis.c>})]
                  do_fork: T
                )
              ]
              negated: F
            )
            (C {(${ Id.VSub_Name rootdir) <'/move-if-change'>} {<tmp-dis.c>} 
              {(${ Id.VSub_Name srcdir) <'/'> (${ Id.VSub_Name prefix) <-dis.c>}
            )
            (C {<rm>} {<-f>} {<tmp-desc.h1>} {<tmp-desc.c1>})
            (C {<rm>} {<-f>} {<tmp-opc.h1>} {<tmp-opc.c1>})
            (C {<rm>} {<-f>} {<tmp-opinst.c1>})
            (C {<rm>} {<-f>} {<tmp-ibld.h1>} {<tmp-ibld.in1>})
            (C {<rm>} {<-f>} {<tmp-asm.in1>} {<tmp-dis.in1>})
          ]
          spids: [297 298 1064 -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 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: [1067 1068 1090 -1]
        )
      ]
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)