(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:tid) op:Equal rhs:{(DQ ('reexec tests'))} spids:[7])]
      spids: [7]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SSHD_ORIG)
          op: Equal
          rhs: {($ VSub_Name '$SSHD')}
          spids: [13]
        )
      ]
      spids: [13]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SSHD_COPY)
          op: Equal
          rhs: {($ VSub_Name '$OBJ') (/sshd)}
          spids: [16]
        )
      ]
      spids: [16]
    )
    (FuncDef
      name: start_sshd_copy
      body: 
        (BraceGroup
          children: [
            (C {(cp)} {($ VSub_Name '$SSHD_ORIG')} {($ VSub_Name '$SSHD_COPY')})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SSHD)
                  op: Equal
                  rhs: {($ VSub_Name '$SSHD_COPY')}
                  spids: [39]
                )
              ]
              spids: [39]
            )
            (C {(start_sshd)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SSHD)
                  op: Equal
                  rhs: {($ VSub_Name '$SSHD_ORIG')}
                  spids: [46]
                )
              ]
              spids: [46]
            )
          ]
          spids: [29]
        )
      spids: [24 28]
    )
    (FuncDef
      name: copy_tests
      body: 
        (BraceGroup
          children: [
            (C {(rm)} {(-f)} {(${ VSub_Name COPY)})
            (ForEach
              iter_name: p
              iter_words: [{(${ VSub_Name SSH_PROTOCOLS)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(verbose)} {(DQ ($ VSub_Name '$tid') (': proto ') ($ VSub_Name '$p'))})
                    (SimpleCommand
                      words: [
                        {(${ VSub_Name SSH)}
                        {(-nqo)}
                        {(DQ ('Protocol=') ($ VSub_Name '$p'))}
                        {(-F)}
                        {($ VSub_Name '$OBJ') (/ssh_config)}
                        {(somehost)}
                        {(cat)}
                        {(${ VSub_Name DATA)}
                      ]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {(${ VSub_Name COPY)}
                          spids: [122]
                        )
                      ]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(fail)} {(DQ ('ssh cat ') ($ VSub_Name '$DATA') (' failed'))})]
                          spids: [-1 142]
                        )
                      ]
                      spids: [-1 154]
                    )
                    (AndOr
                      children: [
                        (C {(cmp)} {(${ VSub_Name DATA)} {(${ VSub_Name COPY)})
                        (C {(fail)} {(DQ ('corrupted copy'))})
                      ]
                      op_id: Op_DPipe
                    )
                    (C {(rm)} {(-f)} {(${ VSub_Name COPY)})
                  ]
                  spids: [84 185]
                )
              spids: [77 82]
            )
          ]
          spids: [60]
        )
      spids: [55 59]
    )
    (C {(verbose)} {(DQ ('test config passing'))})
    (C {(cp)} {($ VSub_Name '$OBJ') (/sshd_config)} {($ VSub_Name '$OBJ') (/sshd_config.orig)})
    (C {(start_sshd)})
    (SimpleCommand
      words: [{(echo)} {(DQ ('InvalidXXX=no'))}]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_config)}
          spids: [213]
        )
      ]
    )
    (C {(copy_tests)})
    (C {(stop_sshd)})
    (C {(cp)} {($ VSub_Name '$OBJ') (/sshd_config.orig)} {($ VSub_Name '$OBJ') (/sshd_config)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$os'))} {(KW_Bang '!') (Lit_Other '=')} 
                  {(DQ (cygwin))} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(verbose)} {(DQ ('test reexec fallback'))})
            (C {(start_sshd_copy)})
            (C {(rm)} {(-f)} {($ VSub_Name '$SSHD_COPY')})
            (C {(copy_tests)})
            (C {(stop_sshd)})
            (C {(verbose)} {(DQ ('test reexec fallback without privsep'))})
            (C {(cp)} {($ VSub_Name '$OBJ') (/sshd_config.orig)} {($ VSub_Name '$OBJ') (/sshd_config)})
            (SimpleCommand
              words: [{(echo)} {(DQ ('UsePrivilegeSeparation=no'))}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: -1
                  arg_word: {($ VSub_Name '$OBJ') (/sshd_config)}
                  spids: [301]
                )
              ]
            )
            (C {(start_sshd_copy)})
            (C {(rm)} {(-f)} {($ VSub_Name '$SSHD_COPY')})
            (C {(copy_tests)})
            (C {(stop_sshd)})
          ]
          spids: [-1 255]
        )
      ]
      spids: [-1 322]
    )
  ]
)