(CommandList
  children: [
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(test)} {(DQ (x) ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (x))} {(-o)} 
                  {(DQ (x) ($ VSub_Number '$2'))} {(Lit_Other '=')} {(DQ (x))} {(-o)} {(DQ (x) ($ VSub_Number '$3'))} {(Lit_Other '=')} {(DQ (x))}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('Usage: ssh2putty hostname port ssh-private-key'))})
            (C {(exit)} {(1)})
          ]
          spids: [-1 50]
        )
      ]
      spids: [-1 64]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:HOST) op:Equal rhs:{($ VSub_Number '$1')} spids:[67])]
      spids: [67]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:PORT) op:Equal rhs:{($ VSub_Number '$2')} spids:[70])]
      spids: [70]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:KEYFILE) op:Equal rhs:{($ VSub_Number '$3')} spids:[73])]
      spids: [73]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (SimpleCommand
                  words: [{(grep)} {(DQ ('BEGIN RSA PRIVATE KEY'))} {($ VSub_Name '$KEYFILE')}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: -1
                      arg_word: {(/dev/null)}
                      spids: [90]
                    )
                    (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[93])
                  ]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(Lit_Other ':')})]
          spids: [-1 98]
        )
      ]
      else_action: [(C {(echo)} {(DQ ('Unsupported private key format'))}) (C {(exit)} {(1)})]
      spids: [103 117]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:public_exponent)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(openssl)} {(rsa)} {(-noout)} {(-text)} {(-in)} {($ VSub_Name '$KEYFILE')})
                          (C {(grep)} {(Lit_Other '^') (publicExponent)})
                          (C {(sed)} {(SQ <'s/.*(//;s/).*//'>)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [121 152]
              )
            }
          spids: [120]
        )
      ]
      spids: [120]
    )
    (AndOr
      children: [(C {(test)} {($ VSub_QMark '$?')} {(-ne)} {(0)}) (C {(exit)} {(1)})]
      op_id: Op_DAmp
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:modulus)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(openssl)} {(rsa)} {(-noout)} {(-modulus)} {(-in)} {($ VSub_Name '$KEYFILE')})
                          (C {(grep)} {(Lit_Other '^') (Lit_VarLike 'Modulus=')})
                          (C {(sed)} {(SQ <'s/^Modulus=/0x/'>)})
                          (C {(tr)} {(A-Z)} {(a-z)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [170 209]
              )
            }
          spids: [169]
        )
      ]
      spids: [169]
    )
    (AndOr
      children: [(C {(test)} {($ VSub_QMark '$?')} {(-ne)} {(0)}) (C {(exit)} {(1)})]
      op_id: Op_DAmp
    )
    (C {(echo)} 
      {
        (DQ ('rsa2@') ($ VSub_Name '$PORT') (':') ($ VSub_Name '$HOST') (' ') 
          ($ VSub_Name '$public_exponent') (',') ($ VSub_Name '$modulus')
        )
      }
    )
  ]
)