(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tid)
          op: Equal
          rhs: {(DQ ('ssh.com key import'))}
          spids: [7]
        )
      ]
      spids: [7]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ (X) (${ VSub_Name TEST_COMBASE))} {(Lit_Other '=')} {(DQ (X))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(fatal)} {(SQ <'$TEST_COMBASE is not set'>)})]
          spids: [-1 36]
        )
      ]
      spids: [-1 45]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:VERSIONS)
          op: Equal
          rhs: 
            {
              (DQ ('\n') ('\t2.0.10\n') ('\t2.0.12\n') ('\t2.0.13\n') ('\t2.1.0\n') ('\t2.2.0\n') 
                ('\t2.3.0\n') ('\t2.3.1\n') ('\t2.4.0\n') ('\t3.0.0\n') ('\t3.1.0\n') ('\t3.2.0\n') ('\t3.2.2\n') ('\t3.2.3\n') 
                ('\t3.2.5\n') ('\t3.2.9\n') ('\t3.2.9.1\n') ('\t3.3.0')
              )
            }
          spids: [48]
        )
      ]
      spids: [48]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:COMPRV)
          op: Equal
          rhs: {(${ VSub_Name OBJ) (/comkey)}
          spids: [71]
        )
      ]
      spids: [71]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:COMPUB)
          op: Equal
          rhs: {(${ VSub_Name COMPRV) (.pub)}
          spids: [77]
        )
      ]
      spids: [77]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OPENSSHPRV)
          op: Equal
          rhs: {(${ VSub_Name OBJ) (/opensshkey)}
          spids: [83]
        )
      ]
      spids: [83]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OPENSSHPUB)
          op: Equal
          rhs: {(${ VSub_Name OPENSSHPRV) (.pub)}
          spids: [89]
        )
      ]
      spids: [89]
    )
    (ForEach
      iter_name: v
      iter_words: [{(${ VSub_Name VERSIONS)}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:keygen)
                  op: Equal
                  rhs: {(${ VSub_Name TEST_COMBASE) (/) (${ VSub_Name v) (/ssh-keygen2)}
                  spids: [113]
                )
              ]
              spids: [113]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-x)} {(${ VSub_Name keygen)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                  spids: [-1 139]
                )
              ]
              spids: [-1 145]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:types) op:Equal rhs:{(DQ (dss))} spids:[148])]
              spids: [148]
            )
            (Case
              to_match: {($ VSub_Name '$v')}
              arms: [
                (case_arm
                  pat_list: [{(2.3.1)} {(3.) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:types)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$types') (' rsa'))}
                          spids: [168]
                        )
                      ]
                      spids: [168]
                    )
                  ]
                  spids: [161 165 175 -1]
                )
              ]
              spids: [154 158 178]
            )
            (ForEach
              iter_name: t
              iter_words: [{($ VSub_Name '$types')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(verbose)} {(DQ ('ssh-keygen ') ($ VSub_Name '$v') (/) ($ VSub_Name '$t'))})
                    (C {(rm)} {(-f)} {($ VSub_Name '$COMPRV')} {($ VSub_Name '$COMPUB')} 
                      {($ VSub_Name '$OPENSSHPRV')} {($ VSub_Name '$OPENSSHPUB')}
                    )
                    (SimpleCommand
                      words: [
                        {(${ VSub_Name keygen)}
                        {(-q)}
                        {(-P)}
                        {(-t)}
                        {($ VSub_Name '$t')}
                        {(${ VSub_Name COMPRV)}
                      ]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {(/dev/null)}
                          spids: [232]
                        )
                        (Redir
                          op_id: Redir_GreatAnd
                          fd: 2
                          arg_word: {(1)}
                          spids: [236]
                        )
                      ]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(fail)} 
                              {(DQ (${ VSub_Name keygen) (' -t ') ($ VSub_Name '$t') (' failed'))}
                            )
                            (ControlFlow
                              token: <ControlFlow_Continue continue>
                            )
                          ]
                          spids: [-1 253]
                        )
                      ]
                      spids: [-1 271]
                    )
                    (SimpleCommand
                      words: [{(${ VSub_Name SSHKEYGEN)} {(-if)} {(${ VSub_Name COMPUB)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {(${ VSub_Name OPENSSHPUB)}
                          spids: [284]
                        )
                      ]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(fail)} 
                              {
                                (DQ ('import public key (') ($ VSub_Name '$v') (/) ($ VSub_Name '$t') 
                                  (') failed')
                                )
                              }
                            )
                            (ControlFlow
                              token: <ControlFlow_Continue continue>
                            )
                          ]
                          spids: [-1 304]
                        )
                      ]
                      spids: [-1 321]
                    )
                    (SimpleCommand
                      words: [{(${ VSub_Name SSHKEYGEN)} {(-if)} {(${ VSub_Name COMPRV)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {(${ VSub_Name OPENSSHPRV)}
                          spids: [334]
                        )
                      ]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(fail)} 
                              {
                                (DQ ('import private key (') ($ VSub_Name '$v') (/) ($ VSub_Name '$t') 
                                  (') failed')
                                )
                              }
                            )
                            (ControlFlow
                              token: <ControlFlow_Continue continue>
                            )
                          ]
                          spids: [-1 354]
                        )
                      ]
                      spids: [-1 371]
                    )
                    (C {(chmod)} {(600)} {(${ VSub_Name OPENSSHPRV)})
                    (Pipeline
                      children: [
                        (C {(${ VSub_Name SSHKEYGEN)} {(-yf)} {(${ VSub_Name OPENSSHPRV)})
                        (C {(diff)} {(-)} {(${ VSub_Name OPENSSHPUB)})
                      ]
                      negated: False
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(fail)} 
                              {
                                (DQ ('public keys (') ($ VSub_Name '$v') (/) ($ VSub_Name '$t') 
                                  (') differ')
                                )
                              }
                            )
                          ]
                          spids: [-1 418]
                        )
                      ]
                      spids: [-1 432]
                    )
                  ]
                  spids: [190 435]
                )
              spids: [186 188]
            )
          ]
          spids: [110 437]
        )
      spids: [104 108]
    )
    (C {(rm)} {(-f)} {($ VSub_Name '$COMPRV')} {($ VSub_Name '$COMPUB')} {($ VSub_Name '$OPENSSHPRV')} 
      {($ VSub_Name '$OPENSSHPUB')}
    )
  ]
)