(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tid)
          op: Equal
          rhs: {(DQ ('change passphrase for key'))}
          spids: [7]
        )
      ]
      spids: [7]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:S1) op:Equal rhs:{(DQ (secret1))} spids:[13])]
      spids: [13]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:S2) op:Equal rhs:{(DQ (2secret))} spids:[18])]
      spids: [18]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KEYTYPES)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(${ VSub_Name SSH)} {(-Q)} {(key-plain)})])
                left_token: <Left_Backtick '`'>
                spids: [25 33]
              )
            }
          spids: [24]
        )
      ]
      spids: [24]
    )
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(C {(ssh_version)} {(1)}) terminator:<Op_Semi ';'>)]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KEYTYPES)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name KEYTYPES) (' rsa1'))}
                  spids: [45]
                )
              ]
              spids: [45]
            )
          ]
          spids: [-1 42]
        )
      ]
      spids: [-1 53]
    )
    (ForEach
      iter_name: t
      iter_words: [{($ VSub_Name '$KEYTYPES')}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (C {(trace)} {(DQ ('generating ') ($ VSub_Name '$t') (' key'))})
            (C {(rm)} {(-f)} {($ VSub_Name '$OBJ') (/) ($ VSub_Name '$t') (-key)})
            (C {(${ VSub_Name SSHKEYGEN)} {(-q)} {(-N)} {(${ VSub_Name S1)} {(-t)} {($ VSub_Name '$t')} 
              {(-f)} {($ VSub_Name '$OBJ') (/) ($ VSub_Name '$t') (-key)}
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-eq)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(${ VSub_Name SSHKEYGEN)}
                        {(-p)}
                        {(-P)}
                        {(${ VSub_Name S1)}
                        {(-N)}
                        {(${ VSub_Name S2)}
                        {(-f)}
                        {($ VSub_Name '$OBJ') (/) ($ VSub_Name '$t') (-key)}
                      ]
                      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[156])]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(fail)} {(DQ ('ssh-keygen -p failed for ') ($ VSub_Name '$t') (-key))})
                          ]
                          spids: [-1 174]
                        )
                      ]
                      spids: [-1 186]
                    )
                  ]
                  spids: [-1 128]
                )
              ]
              else_action: [(C {(fail)} {(DQ ('ssh-keygen for ') ($ VSub_Name '$t') ('-key failed'))})]
              spids: [189 201]
            )
            (C {(rm)} {(-f)} {($ VSub_Name '$OBJ') (/) ($ VSub_Name '$t') (-key)} 
              {($ VSub_Name '$OBJ') (/) ($ VSub_Name '$t') (-key.pub)}
            )
          ]
          spids: [65 218]
        )
      spids: [61 63]
    )
  ]
)