(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tid)
          op: assign_op.Equal
          rhs: {(DQ <'login with different key exchange algorithms'>)}
          spids: [7]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TIME)
          op: assign_op.Equal
          rhs: {<'/usr/bin/time'>}
          spids: [13]
        )
      ]
    )
    (C {<cp>} {($ Id.VSub_DollarName '$OBJ') <'/sshd_proxy'>} 
      {($ Id.VSub_DollarName '$OBJ') <'/sshd_proxy_bak'>}
    )
    (C {<cp>} {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy'>} 
      {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy_bak'>}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ALLKEX)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {(${ Id.VSub_Name SSH)} {<-Q>} {<kex>})
              )
            }
          spids: [36]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:KEXOPT)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {($ Id.VSub_DollarName '$ALLKEX')})
                      (C {<tr>} {(SQ <' '>)} {<Id.Lit_Comma ','>})
                    ]
                    negated: F
                  )
              )
            }
          spids: [49]
        )
      ]
    )
    (command.Simple
      words: [{<echo>} {(DQ <'KexAlgorithms='> ($ Id.VSub_DollarName '$KEXOPT'))}]
      redirects: [
        (redir
          op: <Id.Redir_DGreat '>>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$OBJ') <'/sshd_proxy'>}
        )
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tries)
          op: assign_op.Equal
          rhs: {(DQ <'1 2 3 4'>)}
          spids: [81]
        )
      ]
    )
    (command.ForEach
      iter_name: k
      iter_words: [
        {
          (command_sub
            left_token: <Id.Left_Backtick '`'>
            child: (C {(${ Id.VSub_Name SSH)} {<-Q>} {<kex>})
          )
        }
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {<verbose>} {(DQ <'kex '> ($ Id.VSub_DollarName '$k'))})
            (command.ForEach
              iter_name: i
              iter_words: [{($ Id.VSub_DollarName '$tries')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(${ Id.VSub_Name SSH)} {<-F>} {($ Id.VSub_DollarName '$OBJ') <'/ssh_proxy'>} 
                      {<-o>} {<Id.Lit_VarLike 'KexAlgorithms='> ($ Id.VSub_DollarName '$k')} {<x>} {<true>}
                    )
                    (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 <'ssh kex '> ($ Id.VSub_DollarName '$k'))})]
                          spids: [147 160]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
  ]
)