(CommandList
  children: [
    (FuncDef
      name: printname
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NAME)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [18]
                )
              ]
              spids: [18]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:save_IFS)
                  op: Equal
                  rhs: {($ VSub_Name '$IFS')}
                  spids: [22]
                )
              ]
              spids: [22]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:IFS) op:Equal rhs:{(/)} spids:[26])]
              spids: [26]
            )
            (C {(set)} {(--)} 
              {
                (CommandSubPart
                  command_list: (CommandList children:[(C {(echo)} {(DQ ($ VSub_Name '$NAME'))})])
                  left_token: <Left_Backtick '`'>
                  spids: [34 40]
                )
              }
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:IFS)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$save_IFS'))}
                  spids: [43]
                )
              ]
              spids: [43]
            )
            (While
              cond: [
                (Sentence
                  child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-ge)} {(1)} {(Lit_Other ']')})
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ (x) ($ VSub_Number '$1'))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ (x))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(echo)} {(DQ ('D0755 0 ') ($ VSub_Number '$1'))})]
                          spids: [16777215 85]
                        )
                      ]
                      spids: [16777215 96]
                    )
                    (Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>)
                  ]
                  spids: [63 103]
                )
            )
          ]
          spids: [15]
        )
      spids: [10 14]
    )
    (While
      cond: [
        (Sentence
          child: (C {(test)} {(DQ (x) ($ VSub_Number '$1'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (x))})
          terminator: <Op_Semi ';'>
        )
      ]
      body: 
        (DoGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:arg)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [131]
                )
              ]
              spids: [131]
            )
            (C {(shift)})
          ]
          spids: [128 139]
        )
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:BAD)
          op: Equal
          rhs: {(DQ (../../../../../../../../../../../../../) (${ VSub_Name DIR) (/dotpathdir))}
          spids: [142]
        )
      ]
      spids: [142]
    )
    (Case
      to_match: {(DQ ($ VSub_Name '$SCPTESTMODE'))}
      arms: [
        (case_arm
          pat_list: [{(badserver_0)}]
          action: [
            (C {(echo)} {(DQ ('D0755 0 /') (${ VSub_Name DIR) (/rootpathdir))})
            (C {(echo)} {(DQ ('C755 2 rootpathfile'))})
            (C {(echo)} {(DQ (X))})
          ]
          spids: [160 161 189 16777215]
        )
        (case_arm
          pat_list: [{(badserver_1)}]
          action: [
            (C {(echo)} {(DQ ('D0755 0 ') ($ VSub_Name '$BAD'))})
            (C {(echo)} {(DQ ('C755 2 file'))})
            (C {(echo)} {(DQ (X))})
          ]
          spids: [191 192 217 16777215]
        )
        (case_arm
          pat_list: [{(badserver_2)}]
          action: [
            (C {(echo)} {(DQ ('D0755 0 ') ($ VSub_Name '$BAD'))})
            (C {(echo)} {(DQ ('C755 2 file'))})
            (C {(echo)} {(DQ (X))})
          ]
          spids: [219 220 245 16777215]
        )
        (case_arm
          pat_list: [{(badserver_3)}]
          action: [
            (C {(printname)} {($ VSub_Name '$BAD')})
            (C {(echo)} {(DQ ('C755 2 file'))})
            (C {(echo)} {(DQ (X))})
          ]
          spids: [247 248 270 16777215]
        )
        (case_arm
          pat_list: [{(badserver_4)}]
          action: [
            (C {(printname)} {($ VSub_Name '$BAD')})
            (C {(echo)} {(DQ ('D0755 0 ..'))})
            (C {(echo)} {(DQ ('C755 2 file'))})
            (C {(echo)} {(DQ (X))})
          ]
          spids: [272 273 302 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (C {(set)} {(--)} {($ VSub_Name '$arg')})
            (C {(shift)})
            (C {(exec)} {($ VSub_Name '$SCP')} {(DQ ($ VSub_At '$@'))})
          ]
          spids: [304 305 327 16777215]
        )
      ]
      spids: [152 158 329]
    )
  ]
)