(command.CommandList
  children: [
    (C {<Id.Lit_Colon ':'>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_OS_SH)
          op: assign_op.Equal
          rhs: {<Id.Lit_Colon ':'>}
          spids: [100]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OS)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<uname>}))}
          spids: [104]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OSREL)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<uname>} {<-r>}))}
          spids: [111]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OSMAJOR)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.CommandList
                    children: [
                      (command.Sentence
                        child: 
                          (command.ShAssignment
                            pairs: [
                              (assign_pair
                                lhs: (sh_lhs_expr.Name name:IFS)
                                op: assign_op.Equal
                                rhs: {<.>}
                                spids: [124]
                              )
                            ]
                          )
                        terminator: <Id.Op_Semi _>
                      )
                      (command.Sentence
                        child: (C {<set>} {($ Id.VSub_DollarName '$OSREL')})
                        terminator: <Id.Op_Semi _>
                      )
                      (C {<echo>} {($ Id.VSub_Number '$1')})
                    ]
                  )
              )
            }
          spids: [120]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MACHINE)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<uname>} {<-m>}))}
          spids: [138]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MACHINE_ARCH)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.AndOr
                    ops: [Id.Op_DPipe]
                    children: [
                      (command.Simple
                        words: [{<uname>} {<-p>}]
                        redirects: [
                          (redir
                            op: <Id.Redir_Great '2>'>
                            loc: (redir_loc.Fd fd:2)
                            arg: {<'/dev/null'>}
                          )
                        ]
                        do_fork: T
                      )
                      (C {<echo>} {($ Id.VSub_DollarName '$MACHINE')})
                    ]
                  )
              )
            }
          spids: [147]
        )
      ]
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_DollarName '$MACHINE_ARCH'))}
      arms: [
        (case_arm
          pat_list: [
            {<unknown>}
            {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Id.KW_Bang '!'> <A-Za-z0-9_-> 
              <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
            }
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:MACHINE_ARCH)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$MACHINE'))}
                  spids: [190]
                )
              ]
            )
          ]
          spids: [180 188 194 -1]
        )
      ]
    )
    (command.ShFunction
      name: Which
      body: 
        (BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{<-> <Id.Lit_Star '*'>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:t)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number '$1')}
                              spids: [223]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [219 221 228 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:t)
                          op: assign_op.Equal
                          rhs: {<-x>}
                          spids: [234]
                        )
                      ]
                    )
                  ]
                  spids: [231 232 236 -1]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{<'/'> <Id.Lit_Star '*'>}]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {($ Id.VSub_DollarName '$t')} {($ Id.VSub_Number '$1')})
                        (C {<echo>} {($ Id.VSub_Number '$1')})
                      ]
                    )
                  ]
                  spids: [251 253 266 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_dirs)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.CommandList
                                    children: [
                                      (command.Sentence
                                        child: 
                                          (command.ShAssignment
                                            pairs: [
                                              (assign_pair
                                                lhs: (sh_lhs_expr.Name name:IFS)
                                                op: assign_op.Equal
                                                rhs: {<Id.Lit_Colon ':'>}
                                                spids: [285]
                                              )
                                            ]
                                          )
                                        terminator: <Id.Op_Semi _>
                                      )
                                      (C {<echo>} 
                                        {
                                          (braced_var_sub
                                            token: <Id.VSub_Number 2>
                                            suffix_op: 
                                              (suffix_op.Unary
                                                tok: <Id.VTest_ColonHyphen ':-'>
                                                arg_word: {($ Id.VSub_DollarName '$PATH')}
                                              )
                                          )
                                        }
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [281]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_names: [d]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$_dirs')}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<test>} {($ Id.VSub_DollarName '$t')} 
                                  {($ Id.VSub_DollarName '$d') <'/'> ($ Id.VSub_Number '$1')}
                                )
                                (BraceGroup
                                  children: [
                                    (command.Sentence
                                      child: 
                                        (C {<echo>} 
                                          {($ Id.VSub_DollarName '$d') <'/'> ($ Id.VSub_Number '$1')}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                    (command.Sentence
                                      child: (command.ControlFlow token:<Id.ControlFlow_Break break>)
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [269 270 339 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: toUpper
      body: 
        (BraceGroup
          children: [
            (C 
              {
                (braced_var_sub
                  token: <Id.VSub_Name TR>
                  suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<tr>})
                )
              } {<abcdefghijklmnopqrstuvwxyz>} {<ABCDEFGHIJKLMNOPQRSTUVWXYZ>}
            )
          ]
        )
    )
    (command.ShFunction
      name: toLower
      body: 
        (BraceGroup
          children: [
            (C 
              {
                (braced_var_sub
                  token: <Id.VSub_Name TR>
                  suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<tr>})
                )
              } {<ABCDEFGHIJKLMNOPQRSTUVWXYZ>} {<abcdefghijklmnopqrstuvwxyz>}
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:K)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [393]
        )
      ]
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$OS')}
      arms: [
        (case_arm
          pat_list: [{<AIX>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OSMAJOR)
                  op: assign_op.Equal
                  rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<uname>} {<-v>}))}
                  spids: [408]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OSREL)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$OSMAJOR') <.> 
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: (C {<uname>} {<-r>})
                        )
                      )
                    }
                  spids: [418]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:LOCAL_FS)
                  op: assign_op.Equal
                  rhs: {<jfs>}
                  spids: [432]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PS_AXC)
                  op: assign_op.Equal
                  rhs: {<-e>}
                  spids: [436]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SHARE_ARCH)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$OS') <'/'> ($ Id.VSub_DollarName '$OSMAJOR') <.X>}
                  spids: [440]
                )
              ]
            )
          ]
          spids: [401 402 447 -1]
        )
        (case_arm
          pat_list: [{<SunOS>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOWN)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<Which>} {<chown>} {<'/usr/etc'> <Id.Lit_Colon ':'> <'/usr/bin'>})
                      )
                    }
                  spids: [453]
                )
              ]
            )
            (C {<export>} {<CHOWN>})
            (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: (C {<Which>} {<arch>} {<'/usr/bin'> <Id.Lit_Colon ':'> <'/usr/ucb'>})
                      )
                    }
                  spids: [482]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:MAILER)
                  op: assign_op.Equal
                  rhs: {<'/usr/ucb/Mail'>}
                  spids: [498]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:LOCAL_FS)
                  op: assign_op.Equal
                  rhs: {<4.2>}
                  spids: [502]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$OSREL'))}
              arms: [
                (case_arm
                  pat_list: [{<4.0> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MACHINE_ARCH)
                          op: assign_op.Equal
                          rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<arch>}))}
                          spids: [530]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MACHINE)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$MACHINE_ARCH')}
                          spids: [538]
                        )
                      ]
                    )
                  ]
                  spids: [517 519 542 -1]
                )
                (case_arm
                  pat_list: [{<4> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MACHINE_ARCH)
                          op: assign_op.Equal
                          rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<arch>}))}
                          spids: [550]
                        )
                      ]
                    )
                  ]
                  spids: [545 547 558 -1]
                )
                (case_arm
                  pat_list: [{<5> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:K)
                          op: assign_op.Equal
                          rhs: {<-k>}
                          spids: [566]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:LOCAL_FS)
                          op: assign_op.Equal
                          rhs: {<ufs>}
                          spids: [570]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MAILER)
                          op: assign_op.Equal
                          rhs: {<mailx>}
                          spids: [574]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PS_AXC)
                          op: assign_op.Equal
                          rhs: {<-e>}
                          spids: [578]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {<-x>} {<'/usr/xpg4/bin/ln'>})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:LN)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (braced_var_sub
                                    token: <Id.VSub_Name LN>
                                    suffix_op: 
                                      (suffix_op.Unary
                                        tok: <Id.VTest_ColonHyphen ':-'>
                                        arg_word: 
                                          {<Id.Lit_Slash '/'> <usr> <Id.Lit_Slash '/'> <xpg4> 
                                            <Id.Lit_Slash '/'> <bin> <Id.Lit_Slash '/'> <ln>
                                          }
                                      )
                                  )
                                }
                              spids: [598]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [561 563 625 -1]
                )
              ]
            )
            (command.Case
              to_match: 
                {(DQ ($ Id.VSub_DollarName '$OS') <'/'> ($ Id.VSub_DollarName '$MACHINE_ARCH'))}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <sun386>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SHARE_ARCH)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$MACHINE_ARCH')}
                          spids: [646]
                        )
                      ]
                    )
                  ]
                  spids: [642 644 648 -1]
                )
              ]
            )
          ]
          spids: [449 450 654 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'> <BSD>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:K)
                  op: assign_op.Equal
                  rhs: {<-k>}
                  spids: [661]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:MAILER)
                  op: assign_op.Equal
                  rhs: {<'/usr/bin/Mail'>}
                  spids: [665]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:LOCAL_FS)
                  op: assign_op.Equal
                  rhs: {<local>}
                  spids: [669]
                )
              ]
            )
            (C {<Id.Lit_Colon ':'>} 
              {($ Id.VSub_Hyphen '$-') <Id.Lit_Comma ','> ($ Id.VSub_DollarName '$ENV')}
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_Hyphen '$-') <','> ($ Id.VSub_DollarName '$ENV'))}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <i> <Id.Lit_Star '*'> <Id.Lit_Comma ','> <Id.Lit_Star '*'>}
                  ]
                  spids: [691 696 698 -1]
                )
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <Id.Lit_Comma ','>}
                    {<Id.Lit_Star '*'> <ENVFILE> <Id.Lit_Star '*'>}
                  ]
                  spids: [701 707 709 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ENV)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [715]
                        )
                      ]
                    )
                  ]
                  spids: [712 713 716 -1]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$OS')}
              arms: [
                (case_arm
                  pat_list: [{<NetBSD>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:HOST_ARCH)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$MACHINE')}
                          spids: [741]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SHARE_ARCH)
                          op: assign_op.Equal
                          rhs: 
                            {($ Id.VSub_DollarName '$OS') <'/'> ($ Id.VSub_DollarName '$HOST_ARCH')}
                          spids: [745]
                        )
                      ]
                    )
                  ]
                  spids: [737 738 751 -1]
                )
                (case_arm
                  pat_list: [{<OpenBSD>}]
                  action: [
                    (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: 
                                  (C {<Which>} {<arch>} 
                                    {<'/usr/bin'> <Id.Lit_Colon ':'> <'/usr/ucb'> <Id.Lit_Colon ':'> 
                                      ($ Id.VSub_DollarName '$PATH')
                                    }
                                  )
                              )
                            }
                          spids: [758]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MACHINE_ARCH)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {($ Id.VSub_DollarName '$arch')} {<-s>})
                              )
                            }
                          spids: [774]
                        )
                      ]
                    )
                  ]
                  spids: [754 755 784 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:NAWK)
                  op: assign_op.Equal
                  rhs: {<awk>}
                  spids: [790]
                )
              ]
            )
            (C {<export>} {<NAWK>})
          ]
          spids: [656 658 799 -1]
        )
        (case_arm
          pat_list: [{<HP-UX>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:TMP_DIRS)
                  op: assign_op.Equal
                  rhs: {(DQ <'/tmp /usr/tmp'>)}
                  spids: [805]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:LOCAL_FS)
                  op: assign_op.Equal
                  rhs: {<hfs>}
                  spids: [811]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:MAILER)
                  op: assign_op.Equal
                  rhs: {<mailx>}
                  spids: [815]
                )
              ]
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:_shell)
                      op: assign_op.Equal
                      rhs: {<'/bin/ksh'>}
                      spids: [823]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ENV)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [827]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$OSREL'))}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_QMark '?'> <.09> <Id.Lit_Star '*'>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:OSMAJOR)
                              op: assign_op.Equal
                              rhs: {<9>}
                              spids: [848]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PS_AXC)
                          op: assign_op.Equal
                          rhs: {<-e>}
                          spids: [852]
                        )
                      ]
                    )
                  ]
                  spids: [843 846 854 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_QMark '?'> <.10> <Id.Lit_Star '*'>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:OSMAJOR)
                              op: assign_op.Equal
                              rhs: {<10>}
                              spids: [862]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PS_AXC)
                          op: assign_op.Equal
                          rhs: {<-e>}
                          spids: [866]
                        )
                      ]
                    )
                  ]
                  spids: [857 860 868 -1]
                )
              ]
            )
          ]
          spids: [801 802 874 -1]
        )
        (case_arm
          pat_list: [{<IRIX>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:LOCAL_FS)
                  op: assign_op.Equal
                  rhs: {<efs>}
                  spids: [880]
                )
              ]
            )
          ]
          spids: [876 877 884 -1]
        )
        (case_arm
          pat_list: [{<Interix>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:MACHINE)
                  op: assign_op.Equal
                  rhs: {<i386>}
                  spids: [890]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:MACHINE_ARCH)
                  op: assign_op.Equal
                  rhs: {<i386>}
                  spids: [894]
                )
              ]
            )
          ]
          spids: [886 887 898 -1]
        )
        (case_arm
          pat_list: [{<UnixWare>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OSREL)
                  op: assign_op.Equal
                  rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<uname>} {<-v>}))}
                  spids: [904]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OSMAJOR)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.CommandList
                            children: [
                              (command.Sentence
                                child: 
                                  (command.ShAssignment
                                    pairs: [
                                      (assign_pair
                                        lhs: (sh_lhs_expr.Name name:IFS)
                                        op: assign_op.Equal
                                        rhs: {<.>}
                                        spids: [918]
                                      )
                                    ]
                                  )
                                terminator: <Id.Op_Semi _>
                              )
                              (command.Sentence
                                child: (C {<set>} {($ Id.VSub_DollarName '$OSREL')})
                                terminator: <Id.Op_Semi _>
                              )
                              (C {<echo>} {($ Id.VSub_Number '$1')})
                            ]
                          )
                      )
                    }
                  spids: [914]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:MACHINE_ARCH)
                  op: assign_op.Equal
                  rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<uname>} {<-m>}))}
                  spids: [933]
                )
              ]
            )
          ]
          spids: [900 901 943 -1]
        )
        (case_arm
          pat_list: [{<Linux>}]
          action: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$MACHINE')}
              arms: [
                (case_arm
                  pat_list: [{<i> <Id.Lit_QMark '?'> <86>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MACHINE_ARCH)
                          op: assign_op.Equal
                          rhs: {<i386>}
                          spids: [969]
                        )
                      ]
                    )
                  ]
                  spids: [964 967 971 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:LOCAL_FS)
                  op: assign_op.Equal
                  rhs: {<ext2>}
                  spids: [980]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PS_AXC)
                  op: assign_op.Equal
                  rhs: {<axc>}
                  spids: [984]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-x>} {<'/usr/bin/md5sum'>} {<Id.Lit_RBracket ']'>})
                (BraceGroup
                  children: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:MD5)
                              op: assign_op.Equal
                              rhs: {<'/usr/bin/md5sum'>}
                              spids: [1000]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: (C {<export>} {<MD5>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              ]
            )
          ]
          spids: [945 946 1012 -1]
        )
        (case_arm
          pat_list: [{<QNX>}]
          action: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$MACHINE')}
              arms: [
                (case_arm
                  pat_list: [{<x86pc>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MACHINE_ARCH)
                          op: assign_op.Equal
                          rhs: {<i386>}
                          spids: [1028]
                        )
                      ]
                    )
                  ]
                  spids: [1025 1026 1030 -1]
                )
              ]
            )
          ]
          spids: [1014 1015 1036 -1]
        )
        (case_arm
          pat_list: [{<Haiku>}]
          action: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$MACHINE')}
              arms: [
                (case_arm
                  pat_list: [{<BeBox>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MACHINE_ARCH)
                          op: assign_op.Equal
                          rhs: {<powerpc>}
                          spids: [1052]
                        )
                      ]
                    )
                  ]
                  spids: [1049 1050 1054 -1]
                )
                (case_arm
                  pat_list: [{<BeMac>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MACHINE_ARCH)
                          op: assign_op.Equal
                          rhs: {<powerpc>}
                          spids: [1060]
                        )
                      ]
                    )
                  ]
                  spids: [1057 1058 1062 -1]
                )
                (case_arm
                  pat_list: [{<BePC>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MACHINE_ARCH)
                          op: assign_op.Equal
                          rhs: {<i386>}
                          spids: [1068]
                        )
                      ]
                    )
                  ]
                  spids: [1065 1066 1070 -1]
                )
              ]
            )
          ]
          spids: [1038 1039 1076 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HOSTNAME)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name HOSTNAME>
                suffix_op: 
                  (suffix_op.Unary
                    tok: <Id.VTest_ColonHyphen ':-'>
                    arg_word: 
                      {
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: 
                            (command.Subshell
                              child: (C {<hostname>})
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                            )
                        )
                      }
                  )
              )
            }
          spids: [1081]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HOSTNAME)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name HOSTNAME>
                suffix_op: 
                  (suffix_op.Unary
                    tok: <Id.VTest_ColonHyphen ':-'>
                    arg_word: 
                      {
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: 
                            (command.Subshell
                              child: (C {<uname>} {<-n>})
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                            )
                        )
                      }
                  )
              )
            }
          spids: [1099]
        )
      ]
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_DollarName '$HOSTNAME'))}
      arms: [
        (case_arm
          pat_list: [{<Id.Lit_Star '*'> <.> <Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HOST)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.CommandList
                            children: [
                              (command.Sentence
                                child: 
                                  (command.ShAssignment
                                    pairs: [
                                      (assign_pair
                                        lhs: (sh_lhs_expr.Name name:IFS)
                                        op: assign_op.Equal
                                        rhs: {<.>}
                                        spids: [1136]
                                      )
                                    ]
                                  )
                                terminator: <Id.Op_Semi _>
                              )
                              (command.Sentence
                                child: (C {<set>} {<-->} {($ Id.VSub_DollarName '$HOSTNAME')})
                                terminator: <Id.Op_Semi _>
                              )
                              (C {<echo>} {($ Id.VSub_Number '$1')})
                            ]
                          )
                      )
                    }
                  spids: [1132]
                )
              ]
            )
          ]
          spids: [1127 1130 1151 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HOST)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$HOSTNAME')}
                  spids: [1156]
                )
              ]
            )
          ]
          spids: [1153 1154 1158 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TMP_DIRS)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name TMP_DIRS>
                suffix_op: 
                  (suffix_op.Unary
                    tok: <Id.VTest_ColonHyphen ':-'>
                    arg_word: {(DQ <'/tmp /var/tmp'>)}
                  )
              )
            }
          spids: [1163]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MACHINE_ARCH)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name MACHINE_ARCH>
                suffix_op: 
                  (suffix_op.Unary
                    tok: <Id.VTest_ColonHyphen ':-'>
                    arg_word: {($ Id.VSub_DollarName '$MACHINE')}
                  )
              )
            }
          spids: [1172]
        )
      ]
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_DollarName '$MACHINE_ARCH'))}
      arms: [
        (case_arm
          pat_list: [{<x86> <Id.Lit_Star '*'> <64>} {<amd64>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:MACHINE32_ARCH)
                  op: assign_op.Equal
                  rhs: {<i386>}
                  spids: [1194]
                )
              ]
            )
          ]
          spids: [1187 1192 1196 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'> <64>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:MACHINE32_ARCH)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {($ Id.VSub_DollarName '$MACHINE_ARCH')})
                              (C {<sed>} {(SQ <'s,64,32,'>)})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [1202]
                )
              ]
            )
          ]
          spids: [1198 1200 1218 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:MACHINE32_ARCH)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$MACHINE_ARCH')}
                  spids: [1223]
                )
              ]
            )
          ]
          spids: [1220 1221 1225 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HOST_ARCH)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name HOST_ARCH>
                suffix_op: 
                  (suffix_op.Unary
                    tok: <Id.VTest_ColonHyphen ':-'>
                    arg_word: {($ Id.VSub_DollarName '$MACHINE_ARCH')}
                  )
              )
            }
          spids: [1229]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HOST_ARCH32)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name HOST_ARCH32>
                suffix_op: 
                  (suffix_op.Unary
                    tok: <Id.VTest_ColonHyphen ':-'>
                    arg_word: {($ Id.VSub_DollarName '$MACHINE32_ARCH')}
                  )
              )
            }
          spids: [1236]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SHARE_ARCH_DEFAULT)
          op: assign_op.Equal
          rhs: 
            {($ Id.VSub_DollarName '$OS') <'/'> ($ Id.VSub_DollarName '$OSMAJOR') <'.X/'> 
              ($ Id.VSub_DollarName '$HOST_ARCH')
            }
          spids: [1246]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SHARE_ARCH)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name SHARE_ARCH>
                suffix_op: 
                  (suffix_op.Unary
                    tok: <Id.VTest_ColonHyphen ':-'>
                    arg_word: {($ Id.VSub_DollarName '$SHARE_ARCH_DEFAULT')}
                  )
              )
            }
          spids: [1253]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LN)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name LN>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<ln>})
              )
            }
          spids: [1260]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TR)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name TR>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<tr>})
              )
            }
          spids: [1267]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HOST_TARGET)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} 
                        {(${ Id.VSub_Name OS) (${ Id.VSub_Name OSMAJOR) <-> 
                          ($ Id.VSub_DollarName '$HOST_ARCH')
                        }
                      )
                      (C {<tr>} {<-d>} {<'/'>})
                      (C {<toLower>})
                    ]
                    negated: F
                  )
              )
            }
          spids: [1278]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HOST_TARGET32)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} 
                        {(${ Id.VSub_Name OS) (${ Id.VSub_Name OSMAJOR) <-> 
                          ($ Id.VSub_DollarName '$HOST_ARCH32')
                        }
                      )
                      (C {<tr>} {<-d>} {<'/'>})
                      (C {<toLower>})
                    ]
                    negated: F
                  )
              )
            }
          spids: [1306]
        )
      ]
    )
    (C {<export>} {<HOST_TARGET>} {<HOST_TARGET32>})
    (command.Case
      to_match: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<echo>} {<-n>} {<.>}))}
      arms: [
        (case_arm
          pat_list: [{<-n> <Id.Lit_Star '*'>}]
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:N)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [1359]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:C)
                  op: assign_op.Equal
                  rhs: {(DQ <Id.Lit_BadBackslash '\\'> <c>)}
                  spids: [1362]
                )
              ]
            )
          ]
          spids: [1355 1357 1367 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:N)
                      op: assign_op.Equal
                      rhs: {<-n>}
                      spids: [1372]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:C)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [1376]
                )
              ]
            )
          ]
          spids: [1369 1370 1377 -1]
        )
      ]
    )
    (command.ShFunction
      name: Echo
      body: 
        (BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{<-n>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:_n)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName '$N')}
                              spids: [1401]
                            )
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:_c)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName '$C')}
                              spids: [1404]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [1398 1399 1409 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_n)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [1415]
                        )
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_c)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [1417]
                        )
                      ]
                    )
                  ]
                  spids: [1412 1413 1418 -1]
                )
              ]
            )
            (C {<echo>} {($ Id.VSub_DollarName '$_n')} {(DQ ($ Id.VSub_At '$@'))} 
              {($ Id.VSub_DollarName '$_c')}
            )
          ]
        )
    )
    (C {<export>} {<HOSTNAME>} {<HOST>})
    (C {<export>} {<OS>} {<MACHINE>} {<MACHINE_ARCH>} {<OSREL>} {<OSMAJOR>} {<LOCAL_FS>} {<TMP_DIRS>} 
      {<MAILER>} {<N>} {<C>} {<K>} {<PS_AXC>}
    )
    (C {<export>} {<LN>} {<SHARE_ARCH>} {<TR>})
    (command.Case
      to_match: {<'/'> ($ Id.VSub_Number '$0')}
      arms: [
        (case_arm
          pat_list: [{<Id.Lit_Star '*'> <'/os.sh'>}]
          action: [
            (command.ForEach
              iter_names: [v]
              iterable: (for_iter.Words words:[{($ Id.VSub_Star '$*')}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<eval>} 
                      {<Id.Lit_VarLike 'vv='> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                        ) ($ Id.VSub_DollarName '$v')
                      }
                    )
                    (C {<echo>} 
                      {(DQ ($ Id.VSub_DollarName '$v') <'=\''> ($ Id.VSub_DollarName '$vv') <'\''>)}
                    )
                  ]
                )
            )
          ]
          spids: [1486 1488 1523 -1]
        )
      ]
    )
  ]
)