(CommandList
  children: [
    (C {(Lit_Other ":")} {(wrapper)} {(KW_For for)} {(.exe)} {(challenged)} {(win32)} {(systems/commands)})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:command) op:Equal rhs:{(execrate)} spids:[72])]
      spids: [72]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:bins)
          op: Equal
          rhs: {(SQ <"/bin /usr/bin /usr/sbin">)}
          spids: [76]
        )
      ]
      spids: [76]
    )
    (Case
      to_match: 
        {
          (CommandSubPart
            command_list: 
              (CommandList
                children: [
                  (Subshell
                    child: 
                      (CommandList
                        children: [
                          (Sentence
                            child: (C {(getopts)} {(SQ <"[-][123:xyz]">)} {(opt)} {(--xyz)})
                            terminator: <Op_Semi ";">
                          )
                          (C {(echo)} {(0) ($ VSub_Name "$opt")})
                        ]
                      )
                    redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[103])]
                    spids: [85 101]
                  )
                ]
              )
            left_token: <Left_Backtick "`">
            spids: [84 105]
          )
        }
      arms: [
        (case_arm
          pat_list: [{(0123)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ARGV0)
                  op: Equal
                  rhs: {(DQ ("-a ") ($ VSub_Name "$command"))}
                  spids: [112]
                )
              ]
              spids: [112]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:USAGE)
                  op: Equal
                  rhs: 
                    {
                      (SQ <"\n"> <"[-?\n"> <"@(#)$Id: execrate (AT&T Labs Research) 2002-02-02 $\n"> 
                        <"]\n">
                      ) ($ VSub_Name "$USAGE_LICENSE") 
                      (SQ <"\n"> <"[+NAME?execrate - wrapper for .exe challenged commands]\n"> 
                        <"[+DESCRIPTION?"> <Lit_EscapedChar "\\b"> <execrate> <Lit_EscapedChar "\\b"> <" runs "> <Lit_EscapedChar "\\a"> <command> 
                        <Lit_EscapedChar "\\a"> <" after checking the "> <Lit_EscapedChar "\\a"> <file> <Lit_EscapedChar "\\a"> <"\n"> 
                        <"\toperands for standard semantics with respect to "> <Lit_EscapedChar "\\b"> <win32> <Lit_EscapedChar "\\b"> <" "> <Lit_EscapedChar "\\b"> <.exe> 
                        <Lit_EscapedChar "\\b"> <"\n"> <"\tsuffix conventions. This command is only needed on "> <Lit_EscapedChar "\\b"> <win32> 
                        <Lit_EscapedChar "\\b"> <"\n"> <"\tsystems that inconsistently handle "> <Lit_EscapedChar "\\b"> <.exe> <Lit_EscapedChar "\\b"> 
                        <" across library and\n"> <"\tcommand interfaces. "> <Lit_EscapedChar "\\a"> <command> <Lit_EscapedChar "\\a"> <" may be one of "> 
                        <Lit_EscapedChar "\\b"> <cat> <Lit_EscapedChar "\\b"> <"(1), "> <Lit_EscapedChar "\\b"> <chmod> <Lit_EscapedChar "\\b"> <"(1),\n"> 
                        <"\t"> <Lit_EscapedChar "\\b"> <cmp> <Lit_EscapedChar "\\b"> <"(1), "> <Lit_EscapedChar "\\b"> <cp> 
                        <Lit_EscapedChar "\\b"> <"(1), "> <Lit_EscapedChar "\\b"> <ln> <Lit_EscapedChar "\\b"> <"(1), "> <Lit_EscapedChar "\\b"> <mv> 
                        <Lit_EscapedChar "\\b"> <"(1), or "> <Lit_EscapedChar "\\b"> <rm> <Lit_EscapedChar "\\b"> <"(1).\n"> 
                        <"\tOnly the 2 argument forms of "> <Lit_EscapedChar "\\b"> <cp> <Lit_EscapedChar "\\b"> <", "> <Lit_EscapedChar "\\b"> <ln> 
                        <Lit_EscapedChar "\\b"> <" and "> <Lit_EscapedChar "\\b"> <mv> <Lit_EscapedChar "\\b"> <" are handled.\n"> 
                        <"\tUnsupported commands and commands requiring no change are\n"> <"\tsilently executed.]\n"> <"[+?With no arguments "> <Lit_EscapedChar "\\b"> <execrate> 
                        <Lit_EscapedChar "\\b"> <" exits with status 0 if the current system\n"> <"\tis "> <Lit_EscapedChar "\\b"> <.exe> 
                        <Lit_EscapedChar "\\b"> <" challenged, 1 if the current system is normal.]\n"> 
                        <"[n:show?Show the underlying commands but do not execute.]\n"> <"\n"> <"command [ option ... ] file ...\n"> <"\n"> <"[+SEE ALSO?"> <Lit_EscapedChar "\\b"> <webster> 
                        <Lit_EscapedChar "\\b"> <"(1)]\n">
                      )
                    }
                  spids: [119]
                )
              ]
              spids: [119]
            )
            (FuncDef
              name: usage
              body: 
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:OPTIND) op:Equal rhs:{(0)} spids:[241])]
                      spids: [241]
                    )
                    (C {(getopts)} {($ VSub_Name "$ARGV0")} {(DQ ($ VSub_Name "$USAGE"))} {(OPT)} 
                      {(SQ <"-?">)}
                    )
                    (C {(exit)} {(2)})
                  ]
                  spids: [238]
                )
              spids: [233 236]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:exec) op:Equal rhs:{(1)} spids:[268])]
              spids: [268]
            )
            (While
              cond: [(C {(getopts)} {($ VSub_Name "$ARGV0")} {(DQ ($ VSub_Name "$USAGE"))} {(OPT)})]
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {($ VSub_Name "$OPT")}
                      arms: [
                        (case_arm
                          pat_list: [{(n)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:exec)
                                  op: Equal
                                  rhs: {(0)}
                                  spids: [297]
                                )
                              ]
                              spids: [297]
                            )
                          ]
                          spids: [294 295 300 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other "*")}]
                          action: [(C {(usage)})]
                          spids: [303 304 308 -1]
                        )
                      ]
                      spids: [287 291 311]
                    )
                  ]
                  spids: [285 314]
                )
            )
            (C {(shift)} 
              {
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(expr)} {($ VSub_Name "$OPTIND")} {(-)} {(1)})]
                    )
                  left_token: <Left_Backtick "`">
                  spids: [319 327]
                )
              }
            )
          ]
          spids: [109 110 330 -1]
        )
        (case_arm
          pat_list: [{(Lit_Other "*")}]
          action: [
            (FuncDef
              name: usage
              body: 
                (BraceGroup
                  children: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {(DQ ("Usage: execrate [ -n ] [ command [ option ... ] file ... ]"))}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[349])]
                    )
                    (C {(exit)} {(2)})
                  ]
                  spids: [340]
                )
              spids: [335 338]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:exec) op:Equal rhs:{(1)} spids:[361])]
              spids: [361]
            )
            (While
              cond: [(C {(Lit_Other ":")})]
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {($ VSub_Number "$1")}
                      arms: [
                        (case_arm
                          pat_list: [{(-n)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:exec)
                                  op: Equal
                                  rhs: {(0)}
                                  spids: [382]
                                )
                              ]
                              spids: [382]
                            )
                          ]
                          spids: [379 380 385 -1]
                        )
                        (case_arm
                          pat_list: [{(-) (Lit_Other "*")}]
                          action: [(C {(usage)})]
                          spids: [388 390 394 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other "*")}]
                          action: [(ControlFlow token:<ControlFlow_Break break>)]
                          spids: [397 398 402 -1]
                        )
                      ]
                      spids: [372 376 405]
                    )
                    (C {(shift)})
                  ]
                  spids: [370 411]
                )
            )
          ]
          spids: [332 333 414 -1]
        )
      ]
      spids: [82 107 416]
    )
    (Case
      to_match: {($ VSub_Pound "$#")}
      arms: [
        (case_arm
          pat_list: [{(0)}]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(KW_Bang "!")} {(-x)} {(/bin/cat.exe)})]
                  action: [(C {(exit)} {(1)})]
                  spids: [-1 438]
                )
              ]
              spids: [-1 448]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (SimpleCommand
                      words: [{(/bin/cat)} {(/bin/cat)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {(/dev/null)}
                          spids: [457]
                        )
                        (Redir
                          op_id: Redir_GreatAnd
                          fd: 2
                          arg_word: {(1)}
                          spids: [460]
                        )
                      ]
                    )
                  ]
                  action: [(C {(exit)} {(1)})]
                  spids: [-1 464]
                )
              ]
              spids: [-1 474]
            )
            (C {(exit)} {(0)})
          ]
          spids: [424 425 485 -1]
        )
        (case_arm pat_list:[{(1)}] action:[(C {(usage)})] spids:[487488493-1])
      ]
      spids: [418 422 495]
    )
    (Case
      to_match: {($ VSub_Number "$1")}
      arms: [
        (case_arm
          pat_list: [{(Lit_Other "*") (cat)} {(Lit_Other "*") (rm)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:NUM) op:Equal rhs:{(0)} spids:[511])]
              spids: [511]
            )
          ]
          spids: [503 508 515 -1]
        )
        (case_arm
          pat_list: [{(Lit_Other "*") (chgrp)} {(Lit_Other "*") (chmod)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:NUM) op:Equal rhs:{(1)} spids:[525])]
              spids: [525]
            )
          ]
          spids: [517 522 529 -1]
        )
        (case_arm
          pat_list: [
            {(Lit_Other "*") (cmp)}
            {(Lit_Other "*") (cp)}
            {(Lit_Other "*") (ln)}
            {(Lit_Other "*") (mv)}
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:NUM) op:Equal rhs:{(2)} spids:[545])]
              spids: [545]
            )
          ]
          spids: [531 542 549 -1]
        )
        (case_arm
          pat_list: [{(Lit_Other "*")}]
          action: [
            (Case
              to_match: {($ VSub_Name "$exec")}
              arms: [
                (case_arm
                  pat_list: [{(0)}]
                  action: [(C {(echo)} {(DQ ($ VSub_At "$@"))})]
                  spids: [561 562 570 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [(C {(DQ ($ VSub_At "$@"))})]
                  spids: [573 574 580 -1]
                )
              ]
              spids: [554 558 583]
            )
            (C {(exit)})
          ]
          spids: [551 552 589 -1]
        )
      ]
      spids: [497 501 591]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:CMD) op:Equal rhs:{($ VSub_Number "$1")} spids:[593])]
      spids: [593]
    )
    (C {(shift)})
    (Case
      to_match: {($ VSub_Name "$CMD")}
      arms: [
        (case_arm pat_list:[{(Lit_Other "*") (/) (Lit_Other "*")}] spids:[604607609-1])
        (case_arm
          pat_list: [{(Lit_Other "*")}]
          action: [
            (ForEach
              iter_name: d
              iter_words: [{($ VSub_Name "$bins")}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} {(-x)} {($ VSub_Name "$d") (/) ($ VSub_Number "$1")} {(-o)} {(-x)} 
                              {($ VSub_Name "$d") (/) ($ VSub_Number "$1") (.exe)}
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:CMD)
                                  op: Equal
                                  rhs: {($ VSub_Name "$d") (/) ($ VSub_Number "$1")}
                                  spids: [647]
                                )
                              ]
                              spids: [647]
                            )
                            (ControlFlow token:<ControlFlow_Break break>)
                          ]
                          spids: [-1 645]
                        )
                      ]
                      spids: [-1 656]
                    )
                  ]
                  spids: [623 659]
                )
              spids: [619 -1]
            )
          ]
          spids: [611 612 662 -1]
        )
      ]
      spids: [598 602 664]
    )
    (While
      cond: [(C {(Lit_Other ":")})]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Number "$1")}
              arms: [
                (case_arm
                  pat_list: [{(-) (Lit_Other "*")}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CMD)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name "$CMD") (" ") ($ VSub_Number "$1"))}
                          spids: [683]
                        )
                      ]
                      spids: [683]
                    )
                  ]
                  spids: [679 681 690 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [(ControlFlow token:<ControlFlow_Break break>)]
                  spids: [693 694 698 -1]
                )
              ]
              spids: [672 676 701]
            )
            (C {(shift)})
          ]
          spids: [670 706]
        )
    )
    (Case
      to_match: {($ VSub_Name "$exec")}
      arms: [
        (case_arm
          pat_list: [{(0)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CMD)
                  op: Equal
                  rhs: {(DQ ("echo ") ($ VSub_Name "$CMD"))}
                  spids: [717]
                )
              ]
              spids: [717]
            )
          ]
          spids: [714 715 723 -1]
        )
      ]
      spids: [708 712 725]
    )
    (Case
      to_match: {($ VSub_Name "$NUM") (Lit_Other ":") ($ VSub_Pound "$#")}
      arms: [
        (case_arm pat_list:[{(Lit_Other "*") (Lit_Other ":") (0)}] spids:[735738740-1])
        (case_arm
          pat_list: [{(1) (Lit_Other ":") (Lit_Other "*")}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CMD)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$CMD") (" ") ($ VSub_Number "$1"))}
                  spids: [747]
                )
              ]
              spids: [747]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:NUM) op:Equal rhs:{(0)} spids:[755])]
              spids: [755]
            )
            (C {(shift)})
          ]
          spids: [742 745 762 -1]
        )
      ]
      spids: [727 733 764]
    )
    (Case
      to_match: {($ VSub_Name "$NUM") (Lit_Other ":") ($ VSub_Pound "$#")}
      arms: [
        (case_arm
          pat_list: [{(0) (Lit_Other ":") (Lit_Other "*")}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:status) op:Equal rhs:{(0)} spids:[779])]
              spids: [779]
            )
            (ForEach
              iter_name: f
              do_arg_iter: True
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} {(DQ ($ VSub_Name "$f"))} {(-ef)} 
                              {(DQ ($ VSub_Name "$f")) (.exe)}
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:f)
                                  op: Equal
                                  rhs: {($ VSub_Name "$f") (.exe)}
                                  spids: [808]
                                )
                              ]
                              spids: [808]
                            )
                          ]
                          spids: [-1 806]
                        )
                      ]
                      spids: [-1 813]
                    )
                    (C {($ VSub_Name "$CMD")} {(DQ ($ VSub_Name "$f"))})
                    (Case
                      to_match: {($ VSub_QMark "$?")}
                      arms: [
                        (case_arm pat_list:[{(0)}] spids:[830831833-1])
                        (case_arm
                          pat_list: [{(Lit_Other "*")}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:status)
                                  op: Equal
                                  rhs: {($ VSub_QMark "$?")}
                                  spids: [839]
                                )
                              ]
                              spids: [839]
                            )
                          ]
                          spids: [836 837 842 -1]
                        )
                      ]
                      spids: [823 827 845]
                    )
                  ]
                  spids: [788 848]
                )
              spids: [-1 -1]
            )
            (C {(exit)} {($ VSub_Name "$status")})
          ]
          spids: [774 777 856 -1]
        )
        (case_arm
          pat_list: [{(2) (Lit_Other ":") (2)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:f)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [863]
                )
              ]
              spids: [863]
            )
            (Case
              to_match: {($ VSub_Name "$f")}
              arms: [
                (case_arm pat_list:[{(Lit_Other "*") (.exe)}] spids:[874876878-1])
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} {(DQ ($ VSub_Name "$f"))} {(-ef)} 
                              {(DQ ($ VSub_Name "$f")) (.exe)}
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:f)
                                  op: Equal
                                  rhs: {($ VSub_Name "$f") (.exe)}
                                  spids: [902]
                                )
                              ]
                              spids: [902]
                            )
                          ]
                          spids: [-1 900]
                        )
                      ]
                      spids: [-1 907]
                    )
                  ]
                  spids: [881 882 910 -1]
                )
              ]
              spids: [867 871 913]
            )
            (Case
              to_match: {($ VSub_Name "$f")}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other "*") (.exe)}]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-d)} {(DQ ($ VSub_Number "$2"))})]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:t)
                                  op: Equal
                                  rhs: {($ VSub_Number "$2") (/) ($ VSub_Name "$f")}
                                  spids: [940]
                                )
                              ]
                              spids: [940]
                            )
                          ]
                          spids: [-1 938]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:t)
                              op: Equal
                              rhs: {($ VSub_Number "$2")}
                              spids: [948]
                            )
                          ]
                          spids: [948]
                        )
                      ]
                      spids: [946 952]
                    )
                    (Case
                      to_match: {($ VSub_Name "$t")}
                      arms: [
                        (case_arm
                          pat_list: [{(Lit_Other "*") (/) (Lit_Other "*")}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:b)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [(C {(basename)} {(DQ ($ VSub_Name "$t"))})]
                                          )
                                        left_token: <Left_Backtick "`">
                                        spids: [968 974]
                                      )
                                    }
                                  spids: [967]
                                )
                              ]
                              spids: [967]
                            )
                          ]
                          spids: [962 965 976 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other "*")}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:b)
                                  op: Equal
                                  rhs: {($ VSub_Name "$t")}
                                  spids: [982]
                                )
                              ]
                              spids: [982]
                            )
                          ]
                          spids: [979 980 985 -1]
                        )
                      ]
                      spids: [955 959 988]
                    )
                    (Case
                      to_match: {($ VSub_Name "$b")}
                      arms: [
                        (case_arm
                          pat_list: [{(Lit_Other "*") (.) (Lit_Other "*")}]
                          action: [
                            (Sentence
                              child: 
                                (C {($ VSub_Name "$CMD")} {(DQ ($ VSub_Name "$f"))} 
                                  {(DQ ($ VSub_Name "$t"))}
                                )
                              terminator: <Op_Semi ";">
                            )
                            (C {(exit)})
                          ]
                          spids: [998 1001 1016 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other "*")}]
                          action: [
                            (Sentence
                              child: 
                                (C {($ VSub_Name "$CMD")} {(DQ ($ VSub_Name "$f"))} 
                                  {(DQ ($ VSub_Name "$t")) (.exe)}
                                )
                              terminator: <Op_Semi ";">
                            )
                            (C {(exit)})
                          ]
                          spids: [1019 1020 1036 -1]
                        )
                      ]
                      spids: [991 995 1039]
                    )
                  ]
                  spids: [923 925 1042 -1]
                )
              ]
              spids: [916 920 1045]
            )
          ]
          spids: [858 861 1048 -1]
        )
      ]
      spids: [766 772 1050]
    )
    (C {($ VSub_Name "$CMD")} {(DQ ($ VSub_At "$@"))})
  ]
)