(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tid)
          op: assign_op.Equal
          rhs: {(DQ <'ssh.com key import'>)}
          spids: [7]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ <X> (${ Id.VSub_Name TEST_COMBASE))} 
                      {<Id.Lit_Equals '='>} {(DQ <X>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<fatal>} {(SQ <'$TEST_COMBASE is not set'>)})]
          spids: [16 36]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:VERSIONS)
          op: assign_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]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:COMPRV)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name OBJ) <'/comkey'>}
          spids: [71]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:COMPUB)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name COMPRV) <.pub>}
          spids: [77]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OPENSSHPRV)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name OBJ) <'/opensshkey'>}
          spids: [83]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OPENSSHPUB)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name OPENSSHPRV) <.pub>}
          spids: [89]
        )
      ]
    )
    (command.ForEach
      iter_name: v
      iter_words: [{(${ Id.VSub_Name VERSIONS)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:keygen)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name TEST_COMBASE) <'/'> (${ Id.VSub_Name v) <'/ssh-keygen2'>}
                  spids: [113]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-x>} 
                              {(${ Id.VSub_Name keygen)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)]
                  spids: [124 139]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:types)
                  op: assign_op.Equal
                  rhs: {(DQ <dss>)}
                  spids: [148]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$v')}
              arms: [
                (case_arm
                  pat_list: [{<2.3.1>} {<3.> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:types)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$types') <' rsa'>)}
                          spids: [168]
                        )
                      ]
                    )
                  ]
                  spids: [161 165 175 -1]
                )
              ]
            )
            (command.ForEach
              iter_name: t
              iter_words: [{($ Id.VSub_DollarName '$types')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<verbose>} 
                      {
                        (DQ <'ssh-keygen '> ($ Id.VSub_DollarName '$v') <'/'> 
                          ($ Id.VSub_DollarName '$t')
                        )
                      }
                    )
                    (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$COMPRV')} 
                      {($ Id.VSub_DollarName '$COMPUB')} {($ Id.VSub_DollarName '$OPENSSHPRV')} {($ Id.VSub_DollarName '$OPENSSHPUB')}
                    )
                    (command.Simple
                      words: [
                        {(${ Id.VSub_Name keygen)}
                        {<-q>}
                        {<-P>}
                        {<-t>}
                        {($ Id.VSub_DollarName '$t')}
                        {(${ Id.VSub_Name COMPRV)}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<1>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<fail>} 
                              {
                                (DQ (${ Id.VSub_Name keygen) <' -t '> ($ Id.VSub_DollarName '$t') 
                                  <' failed'>
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [240 253]
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(${ Id.VSub_Name SSHKEYGEN)} {<-if>} {(${ Id.VSub_Name COMPUB)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(${ Id.VSub_Name OPENSSHPUB)}
                        )
                      ]
                      do_fork: T
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<fail>} 
                              {
                                (DQ <'import public key ('> ($ Id.VSub_DollarName '$v') <'/'> 
                                  ($ Id.VSub_DollarName '$t') <') failed'>
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [291 304]
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(${ Id.VSub_Name SSHKEYGEN)} {<-if>} {(${ Id.VSub_Name COMPRV)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(${ Id.VSub_Name OPENSSHPRV)}
                        )
                      ]
                      do_fork: T
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<fail>} 
                              {
                                (DQ <'import private key ('> ($ Id.VSub_DollarName '$v') <'/'> 
                                  ($ Id.VSub_DollarName '$t') <') failed'>
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [341 354]
                        )
                      ]
                    )
                    (C {<chmod>} {<600>} {(${ Id.VSub_Name OPENSSHPRV)})
                    (command.Pipeline
                      children: [
                        (C {(${ Id.VSub_Name SSHKEYGEN)} {<-yf>} {(${ Id.VSub_Name OPENSSHPRV)})
                        (C {<diff>} {<->} {(${ Id.VSub_Name OPENSSHPUB)})
                      ]
                      negated: F
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<fail>} 
                              {
                                (DQ <'public keys ('> ($ Id.VSub_DollarName '$v') <'/'> 
                                  ($ Id.VSub_DollarName '$t') <') differ'>
                                )
                              }
                            )
                          ]
                          spids: [405 418]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$COMPRV')} {($ Id.VSub_DollarName '$COMPUB')} 
      {($ Id.VSub_DollarName '$OPENSSHPRV')} {($ Id.VSub_DollarName '$OPENSSHPUB')}
    )
  ]
)