(CommandList
  children: [
    (C {(Lit_Other ':')})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OS)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(uname)})])
                left_token: <Left_Backtick '`'>
                spids: [53 55]
              )
            }
          spids: [52]
        )
      ]
      spids: [52]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OSREL)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(uname)} {(-r)})])
                left_token: <Left_Backtick '`'>
                spids: [58 62]
              )
            }
          spids: [57]
        )
      ]
      spids: [57]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OSMAJOR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Sentence
                        child: 
                          (Assignment
                            keyword: Assign_None
                            pairs: [
                              (assign_pair
                                lhs: (LhsName name:IFS)
                                op: Equal
                                rhs: {(.)}
                                spids: [66]
                              )
                            ]
                            spids: [66]
                          )
                        terminator: <Op_Semi ';'>
                      )
                      (Sentence
                        child: (C {(set)} {($ VSub_Name '$OSREL')})
                        terminator: <Op_Semi ';'>
                      )
                      (C {(echo)} {($ VSub_Number '$1')})
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [65 78]
              )
            }
          spids: [64]
        )
      ]
      spids: [64]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:machine)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (AndOr
                        children: [
                          (SimpleCommand
                            words: [{(uname)} {(-p)}]
                            redirects: [
                              (Redir
                                op_id: Redir_Great
                                fd: 2
                                arg_word: {(/dev/null)}
                                spids: [86]
                              )
                            ]
                          )
                          (C {(uname)} {(-m)})
                        ]
                        op_id: Op_DPipe
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [81 94]
              )
            }
          spids: [80]
        )
      ]
      spids: [80]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:MACHINE) op:Equal rhs:{(SQ )} spids:[96])]
      spids: [96]
    )
    (Case
      to_match: {(DQ ($ VSub_Name '$machine'))}
      arms: [
        (case_arm
          pat_list: [
            {(unknown)}
            {(Lit_Other '*') (Lit_Other '[') (KW_Bang '!') (A-Za-z0-9_-) (Lit_Other ']') (Lit_Other '*')}
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:machine)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(uname)} {(-m)})])
                        left_token: <Left_Backtick '`'>
                        spids: [125 129]
                      )
                    }
                  spids: [124]
                )
              ]
              spids: [124]
            )
          ]
          spids: [113 121 132 -1]
        )
      ]
      spids: [105 111 134]
    )
    (FuncDef
      name: Which
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_dirs)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Sentence
                                child: 
                                  (Assignment
                                    keyword: Assign_None
                                    pairs: [
                                      (assign_pair
                                        lhs: (LhsName name:IFS)
                                        op: Equal
                                        rhs: {(Lit_Other ':')}
                                        spids: [160]
                                      )
                                    ]
                                    spids: [160]
                                  )
                                terminator: <Op_Semi ';'>
                              )
                              (C {(echo)} 
                                {
                                  (BracedVarSub
                                    token: <VSub_Number 2>
                                    suffix_op: 
                                      (StringUnary
                                        op_id: VTest_ColonHyphen
                                        arg_word: {($ VSub_Name '$PATH')}
                                      )
                                    spids: [166 170]
                                  )
                                }
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [159 171]
                      )
                    }
                  spids: [158]
                )
              ]
              spids: [158]
            )
            (ForEach
              iter_name: d
              iter_words: [{($ VSub_Name '$_dirs')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      children: [
                        (C {(test)} {(-x)} {($ VSub_Name '$d') (/) ($ VSub_Number '$1')})
                        (BraceGroup
                          children: [
                            (Sentence
                              child: (C {(echo)} {($ VSub_Name '$d') (/) ($ VSub_Number '$1')})
                              terminator: <Op_Semi ';'>
                            )
                            (Sentence
                              child: (ControlFlow token:<ControlFlow_Break break>)
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [196]
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  spids: [183 211]
                )
              spids: [179 -1]
            )
          ]
          spids: [147]
        )
      spids: [143 146]
    )
    (Case
      to_match: {($ VSub_Name '$OS')}
      arms: [
        (case_arm
          pat_list: [{(OpenBSD)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:MACHINE)
                  op: Equal
                  rhs: {($ VSub_Name '$OS') ($ VSub_Name '$OSMAJOR') (.) ($ VSub_Name '$machine')}
                  spids: [226]
                )
              ]
              spids: [226]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:arch)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(Which)} {(arch)} 
                                {(/usr/bin) (Lit_Other ':') (/usr/ucb) (Lit_Other ':') 
                                  ($ VSub_Name '$PATH')
                                }
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [234 244]
                      )
                    }
                  spids: [233]
                )
              ]
              spids: [233]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:MACHINE_ARCH)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: (CommandList children:[(C {($ VSub_Name '$arch')} {(-s)})])
                            left_token: <Left_Backtick '`'>
                            spids: [248 252]
                          )
                        }
                      spids: [247]
                    )
                  ]
                  spids: [247]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [222 223 256 -1]
        )
        (case_arm
          pat_list: [{(Bitrig)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:MACHINE)
                  op: Equal
                  rhs: {($ VSub_Name '$OS') ($ VSub_Name '$OSMAJOR') (.) ($ VSub_Name '$machine')}
                  spids: [262]
                )
              ]
              spids: [262]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:MACHINE_ARCH)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: (CommandList children:[(C {(uname)} {(-m)})])
                            left_token: <Left_Backtick '`'>
                            spids: [270 274]
                          )
                        }
                      spids: [269]
                    )
                  ]
                  spids: [269]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [258 259 278 -1]
        )
        (case_arm
          pat_list: [{(Lit_Other '*') (BSD)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:MACHINE)
                  op: Equal
                  rhs: {($ VSub_Name '$OS') ($ VSub_Name '$OSMAJOR') (.) ($ VSub_Name '$machine')}
                  spids: [285]
                )
              ]
              spids: [285]
            )
          ]
          spids: [280 282 292 -1]
        )
        (case_arm
          pat_list: [{(SunOS)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:arch)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(Which)} {(arch)} 
                                {(/usr/bin) (Lit_Other ':') (/usr/ucb) (Lit_Other ':') 
                                  ($ VSub_Name '$PATH')
                                }
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [299 309]
                      )
                    }
                  spids: [298]
                )
              ]
              spids: [298]
            )
            (AndOr
              children: [
                (C {(test)} {(DQ ($ VSub_Name '$arch'))})
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:machine_arch)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: (CommandList children:[(C {($ VSub_Name '$arch')})])
                            left_token: <Left_Backtick '`'>
                            spids: [321 323]
                          )
                        }
                      spids: [320]
                    )
                  ]
                  spids: [320]
                )
              ]
              op_id: Op_DAmp
            )
            (Case
              to_match: {(DQ ($ VSub_Name '$OSREL'))}
              arms: [
                (case_arm
                  pat_list: [{(4.0) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:MACHINE_ARCH)
                          op: Equal
                          rhs: {($ VSub_Name '$machine_arch')}
                          spids: [340]
                        )
                        (assign_pair
                          lhs: (LhsName name:MACHINE)
                          op: Equal
                          rhs: {($ VSub_Name '$machine_arch')}
                          spids: [343]
                        )
                      ]
                      spids: [340]
                    )
                  ]
                  spids: [336 338 345 -1]
                )
                (case_arm
                  pat_list: [{(4) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:MACHINE_ARCH)
                          op: Equal
                          rhs: {($ VSub_Name '$machine_arch')}
                          spids: [352]
                        )
                      ]
                      spids: [352]
                    )
                  ]
                  spids: [348 350 354 -1]
                )
              ]
              spids: [327 333 357]
            )
          ]
          spids: [294 295 360 -1]
        )
        (case_arm
          pat_list: [{(HP-UX)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:MACHINE_ARCH)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Sentence
                                child: 
                                  (Assignment
                                    keyword: Assign_None
                                    pairs: [
                                      (assign_pair
                                        lhs: (LhsName name:IFS)
                                        op: Equal
                                        rhs: {(DQ (/-.))}
                                        spids: [368]
                                      )
                                    ]
                                    spids: [368]
                                  )
                                terminator: <Op_Semi ';'>
                              )
                              (Sentence
                                child: (C {(set)} {($ VSub_Name '$machine')})
                                terminator: <Op_Semi ';'>
                              )
                              (C {(echo)} {($ VSub_Number '$1')})
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [367 382]
                      )
                    }
                  spids: [366]
                )
              ]
              spids: [366]
            )
          ]
          spids: [362 363 385 -1]
        )
        (case_arm
          pat_list: [{(Interix)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MACHINE) op:Equal rhs:{(i386)} spids:[391])]
              spids: [391]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MACHINE_ARCH) op:Equal rhs:{(i386)} spids:[395])]
              spids: [395]
            )
          ]
          spids: [387 388 399 -1]
        )
        (case_arm
          pat_list: [{(UnixWare)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OSREL)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(uname)} {(-v)})])
                        left_token: <Left_Backtick '`'>
                        spids: [406 410]
                      )
                    }
                  spids: [405]
                )
              ]
              spids: [405]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OSMAJOR)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Sentence
                                child: 
                                  (Assignment
                                    keyword: Assign_None
                                    pairs: [
                                      (assign_pair
                                        lhs: (LhsName name:IFS)
                                        op: Equal
                                        rhs: {(.)}
                                        spids: [415]
                                      )
                                    ]
                                    spids: [415]
                                  )
                                terminator: <Op_Semi ';'>
                              )
                              (Sentence
                                child: (C {(set)} {($ VSub_Name '$OSREL')})
                                terminator: <Op_Semi ';'>
                              )
                              (C {(echo)} {($ VSub_Number '$1')})
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [414 427]
                      )
                    }
                  spids: [413]
                )
              ]
              spids: [413]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:MACHINE_ARCH)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(uname)} {(-m)})])
                        left_token: <Left_Backtick '`'>
                        spids: [431 435]
                      )
                    }
                  spids: [430]
                )
              ]
              spids: [430]
            )
          ]
          spids: [401 402 438 -1]
        )
        (case_arm
          pat_list: [{(Linux)}]
          action: [
            (Case
              to_match: {(DQ ($ VSub_Name '$machine'))}
              arms: [
                (case_arm
                  pat_list: [{(i) (Lit_Other '?') (86)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:MACHINE_ARCH)
                          op: Equal
                          rhs: {(i386)}
                          spids: [458]
                        )
                      ]
                      spids: [458]
                    )
                  ]
                  spids: [453 456 460 -1]
                )
              ]
              spids: [444 450 465]
            )
          ]
          spids: [440 441 468 -1]
        )
      ]
      spids: [216 220 470]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:MACHINE)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name MACHINE>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: {($ VSub_Name '$OS') ($ VSub_Name '$OSMAJOR')}
                  )
                spids: [474 479]
              )
            }
          spids: [473]
        )
      ]
      spids: [473]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:MACHINE_ARCH)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name MACHINE_ARCH>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{($ VSub_Name '$machine')})
                spids: [482 486]
              )
            }
          spids: [481]
        )
      ]
      spids: [481]
    )
    (Pipeline
      children: [
        (Subshell
          child: 
            (Case
              to_match: {(DQ ($ VSub_Number '$0'))}
              arms: [
                (case_arm
                  pat_list: [{(arch) (Lit_Other '*')}]
                  action: [(C {(echo)} {($ VSub_Name '$MACHINE_ARCH')})]
                  spids: [499 501 506 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (Case
                      to_match: {(DQ ($ VSub_Number '$1'))}
                      arms: [
                        (case_arm
                          pat_list: [{(DQ )}]
                          action: [(C {(echo)} {($ VSub_Name '$MACHINE')})]
                          spids: [-1 523 528 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [(C {(echo)} {($ VSub_Name '$MACHINE_ARCH')})]
                          spids: [531 532 537 -1]
                        )
                      ]
                      spids: [512 518 540]
                    )
                  ]
                  spids: [508 509 543 -1]
                )
              ]
              spids: [491 497 545]
            )
          spids: [489 547]
        )
        (C {(tr)} {(ABCDEFGHIJKLMNOPQRSTUVWXYZ)} {(abcdefghijklmnopqrstuvwxyz)})
      ]
      negated: False
    )
  ]
)