(command.CommandList
  children: [
    (command.ShFunction
      name: cleanup
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [{<kdestroy>} {<-q>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName TMP_FILE)}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [{<rm>} {<-r>} {($ Id.VSub_DollarName TMPDIR)}]
              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>})
              ]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_Number 1)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: exiting
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<printf>} 
              {
                (DQ <Id.Lit_BadBackslash '\\'> <n> 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<gettext>} {(DQ <'Exiting setup, nothing changed'>)})
                    right: <Id.Eof_RParen _>
                  ) <.> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                )
              }
            )
            (C {<cleanup>} {($ Id.VSub_Number 1)})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: error_message
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [
                {<printf>}
                {<-->}
                {
                  (DQ <---------------------------------------------------> <Id.Lit_BadBackslash '\\'> 
                    <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: (C {<gettext>} {(DQ <'Setup FAILED'>)})
                      right: <Id.Eof_RParen _>
                    ) <.> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (C {<cleanup>} {<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: check_bin
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<Id.Lit_VarLike 'bin='> ($ Id.VSub_Number 1)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.LogicalNot
                                  child: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_x
                                      child: {($ Id.VSub_DollarName bin)}
                                    )
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <'Could not access/execute %s'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                        {($ Id.VSub_DollarName bin)}
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [244 257]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: cannot_create
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<Id.Lit_VarLike 'filename='> (DQ ($ Id.VSub_Number 1))})
            (C {<typeset>} {<Id.Lit_VarLike 'stat='> (DQ ($ Id.VSub_Number 2))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_ne
                                  left: {($ Id.VSub_DollarName stat)}
                                  right: {<0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <n> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <'Can not create/edit %s, exiting'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                        {($ Id.VSub_DollarName filename)}
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [313 326]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: update_pam_conf
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<PAM>} {<TPAM>} {<service>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PAM='> name:PAM)
                  op: assign_op.Equal
                  rhs: {<'/etc/pam.conf'>}
                  spids: [377]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TPAM='> name:TPAM)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<mktemp>} {<-q>} {<-t>} {<kclient-pamconf.XXXXXX>})
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [382]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName TPAM)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <n> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <'Can not create temporary file, exiting'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [394 405]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [{<cp>} {($ Id.VSub_DollarName PAM)} {($ Id.VSub_DollarName TPAM)}]
              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>})
              ]
              more_env: []
              do_fork: T
            )
            (C {<printf>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<gettext>} {(DQ <'Configuring %s'>)})
                    right: <Id.Eof_RParen _>
                  ) <.> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                )
              } {($ Id.VSub_DollarName PAM)}
            )
            (command.ForEach
              iter_names: [service]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName SVCs)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'svc='> name:svc)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name service>
                                var_name: service
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VOp1_Percent '%'>
                                    arg_word: {<':'> <Id.Lit_Other '*'>}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [483]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'auth_type='> name:auth_type)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name service>
                                var_name: service
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VOp1_Pound '#'>
                                    arg_word: {<Id.Lit_Other '*'> <':'>}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [492]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<egrep>} {<-s>} 
                                      {
                                        (DQ <'^'> ($ Id.VSub_DollarName svc) 
                                          <'[ \t][ \t]*auth.*pam_krb5*'>
                                        )
                                      } {($ Id.VSub_DollarName TPAM)}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<printf>}
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (C {<gettext>} 
                                          {
                                            (DQ 
                                              <
'The %s service is already configured for pam_krb5, please merge this service in %s'
                                              >
                                            )
                                          }
                                        )
                                      right: <Id.Eof_RParen _>
                                    ) <.> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                                  )
                                }
                                {($ Id.VSub_DollarName svc)}
                                {($ Id.VSub_DollarName PAM)}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [501 516]
                        )
                      ]
                      else_action: [
                        (command.Simple
                          words: [{<exec>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '3>>'>
                              loc: (redir_loc.Fd fd:3)
                              arg: {($ Id.VSub_DollarName TPAM)}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (command.Simple
                          words: [
                            {<printf>}
                            {
                              (DQ <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName svc) 
                                <Id.Lit_BadBackslash '\\'> <'tauth include'> <Id.Lit_BadBackslash '\\'> <t> <Id.Lit_BadBackslash '\\'> <tpam_krb5_> 
                                ($ Id.VSub_DollarName auth_type) <Id.Lit_BadBackslash '\\'> <n>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<3>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.Simple
              words: [{<cp>} {($ Id.VSub_DollarName TPAM)} {($ Id.VSub_DollarName PAM)}]
              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>})
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [{<rm>} {($ Id.VSub_DollarName TPAM)}]
              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>})
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: modify_nfssec_conf
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<Id.Lit_VarLike 'NFSSEC_FILE='> (DQ <'/etc/nfssec.conf'>)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_r
                                  child: {($ Id.VSub_DollarName NFSSEC_FILE)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<cat>} {($ Id.VSub_DollarName NFSSEC_FILE)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName NFSSEC_FILE) <.sav>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (C {<cannot_create>} {($ Id.VSub_DollarName NFSSEC_FILE) <.sav>} 
                      {($ Id.VSub_QMark '?')}
                    )
                  ]
                  spids: [629 640]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [{<cat>} {($ Id.VSub_DollarName NFSSEC_FILE)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName TMP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<cannot_create>} {($ Id.VSub_DollarName TMP_FILE)} {($ Id.VSub_QMark '?')})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              words: [
                                {<grep>}
                                {<-s>}
                                {(DQ <'#krb5'>)}
                                {($ Id.VSub_DollarName NFSSEC_FILE)}
                              ]
                              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>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<sed>} {(DQ <'s%^#krb5%krb5%'>)} {($ Id.VSub_DollarName TMP_FILE)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName NFSSEC_FILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (C {<cannot_create>} {($ Id.VSub_DollarName NFSSEC_FILE)} {($ Id.VSub_QMark '?')})
                  ]
                  spids: [682 702]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: call_kadmin
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<Id.Lit_VarLike 'svc='> (DQ ($ Id.VSub_Number 1))})
            (C {<typeset>} {<bool1>} {<bool2>} {<bool3>} {<bool4>})
            (C {<typeset>} {<service_princ>} {<getprincsubcommand>} {<anksubcommand>} {<ktaddsubcommand>})
            (C {<typeset>} {<ktremsubcommand>})
            (command.ForEach
              iter_names: [listentry]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName fqdnlist)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bool1='> name:bool1)
                              op: assign_op.Equal
                              rhs: {<1>}
                              spids: [789]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bool2='> name:bool2)
                              op: assign_op.Equal
                              rhs: {<1>}
                              spids: [793]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bool3='> name:bool3)
                              op: assign_op.Equal
                              rhs: {<1>}
                              spids: [797]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bool4='> name:bool4)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [801]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'service_princ='>
                              name: service_princ
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<echo>} 
                                    {(DQ (${ Id.VSub_Name svc) <'/'> (${ Id.VSub_Name listentry))}
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [806]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'getprincsubcommand='>
                              name: getprincsubcommand
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'getprinc '> ($ Id.VSub_DollarName service_princ))}
                          spids: [822]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'anksubcommand='>
                              name: anksubcommand
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'addprinc -randkey '> ($ Id.VSub_DollarName service_princ))}
                          spids: [829]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'ktaddsubcommand='>
                              name: ktaddsubcommand
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'ktadd '> ($ Id.VSub_DollarName service_princ))}
                          spids: [836]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'ktremsubcommand='>
                              name: ktremsubcommand
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'ktrem '> ($ Id.VSub_DollarName service_princ) <' all'>)}
                          spids: [843]
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      words: [
                        {<kadmin>}
                        {<-c>}
                        {($ Id.VSub_DollarName KRB5CCNAME)}
                        {<-q>}
                        {(DQ ($ Id.VSub_DollarName getprincsubcommand))}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '1>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName TMP_FILE)}
                        )
                        (redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<1>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (C {<egrep>} {<-s>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<gettext>} {(DQ <'get_principal: Principal does not exist'>)})
                            right: <Id.Eof_RParen _>
                          )
                        )
                      } {($ Id.VSub_DollarName TMP_FILE)}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bool1='> name:bool1)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '?')}
                          spids: [889]
                        )
                      ]
                      redirects: []
                    )
                    (C {<egrep>} {<-s>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} 
                                {
                                  (DQ <'get_principal: Operation requires '> 
                                    (command_sub
                                      left_token: <Id.Left_Backtick '`'>
                                      child: (command.NoOp)
                                      right: <Id.Backtick_Right '`'>
                                    ) <get>
                                  )
                                }
                              )
                            right: <Id.Eof_RParen _>
                          )
                        )
                      } {($ Id.VSub_DollarName TMP_FILE)}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bool2='> name:bool2)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '?')}
                          spids: [914]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.LogicalOr
                                          left: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_eq
                                              left: {($ Id.VSub_DollarName bool1)}
                                              right: {<0>}
                                            )
                                          right: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_eq
                                              left: {($ Id.VSub_DollarName bool2)}
                                              right: {<0>}
                                            )
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<kadmin>}
                                {<-c>}
                                {($ Id.VSub_DollarName KRB5CCNAME)}
                                {<-q>}
                                {(DQ ($ Id.VSub_DollarName anksubcommand))}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '1>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName TMP_FILE)}
                                )
                                (redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (C {<egrep>} {<-s>} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {<gettext>} 
                                        {
                                          (DQ 
                                            <
'add_principal: Principal or policy already exists while creating '
                                            > (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                                            ($ Id.VSub_DollarName service_princ) <'@'> ($ Id.VSub_DollarName realm) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                                            <.>
                                          )
                                        }
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                )
                              } {($ Id.VSub_DollarName TMP_FILE)}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bool3='> name:bool3)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '?')}
                                  spids: [986]
                                )
                              ]
                              redirects: []
                            )
                            (C {<egrep>} {<-s>} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {<gettext>} 
                                        {
                                          (DQ <'Principal '> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\"'>
                                              ch: '"'
                                            ) ($ Id.VSub_DollarName service_princ) <'@'> ($ Id.VSub_DollarName realm) 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\"'>
                                              ch: '"'
                                            ) <' created.'>
                                          )
                                        }
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                )
                              } {($ Id.VSub_DollarName TMP_FILE)}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bool4='> name:bool4)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '?')}
                                  spids: [1014]
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.LogicalOr
                                                  left: 
                                                    (bool_expr.Binary
                                                      op_id: Id.BoolBinary_eq
                                                      left: {($ Id.VSub_DollarName bool3)}
                                                      right: {<0>}
                                                    )
                                                  right: 
                                                    (bool_expr.Binary
                                                      op_id: Id.BoolBinary_eq
                                                      left: {($ Id.VSub_DollarName bool4)}
                                                      right: {<0>}
                                                    )
                                                )
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<printf>} 
                                      {
                                        (DQ 
                                          (command_sub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (C {<gettext>} {(DQ <'%s entry ADDED to KDC database'>)})
                                            right: <Id.Eof_RParen _>
                                          ) <.> <Id.Lit_BadBackslash '\\'> <n>
                                        )
                                      } {($ Id.VSub_DollarName service_princ)}
                                    )
                                  ]
                                  spids: [1019 1040]
                                )
                              ]
                              else_action: [
                                (command.Sentence
                                  child: (C {<cat>} {($ Id.VSub_DollarName TMP_FILE)})
                                  terminator: <Id.Op_Semi _>
                                )
                                (command.Simple
                                  words: [
                                    {<printf>}
                                    {
                                      (DQ <Id.Lit_BadBackslash '\\'> <n> 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (C {<gettext>} 
                                              {(DQ <'kadmin: add_principal of %s failed, exiting'>)}
                                            )
                                          right: <Id.Eof_RParen _>
                                        ) <.> <Id.Lit_BadBackslash '\\'> <n>
                                      )
                                    }
                                    {($ Id.VSub_DollarName service_princ)}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<2>}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                                (C {<error_message>})
                              ]
                              redirects: []
                            )
                          ]
                          spids: [919 940]
                        )
                      ]
                      else_action: [
                        (command.Simple
                          words: [
                            {<printf>}
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (C {<gettext>} {(DQ <'%s entry already exists in KDC database'>)})
                                  right: <Id.Eof_RParen _>
                                ) <.> <Id.Lit_BadBackslash '\\'> <n>
                              )
                            }
                            {($ Id.VSub_DollarName service_princ)}
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      words: [{<klist>} {<-k>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '1>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName TMP_FILE)}
                        )
                        (redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<1>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (C {<egrep>} {<-s>} 
                      {(DQ ($ Id.VSub_DollarName service_princ) <'@'> ($ Id.VSub_DollarName realm))} {($ Id.VSub_DollarName TMP_FILE)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_eq
                                          left: {($ Id.VSub_QMark '?')}
                                          right: {<0>}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<printf>}
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (C {<gettext>} {(DQ <'%s entry already present in keytab'>)})
                                      right: <Id.Eof_RParen _>
                                    ) <.> <Id.Lit_BadBackslash '\\'> <n>
                                  )
                                }
                                {($ Id.VSub_DollarName service_princ)}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.Simple
                              words: [
                                {<kadmin>}
                                {<-c>}
                                {($ Id.VSub_DollarName KRB5CCNAME)}
                                {<-q>}
                                {(DQ ($ Id.VSub_DollarName ktremsubcommand))}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '1>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName TMP_FILE)}
                                )
                                (redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [1151 1164]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.Simple
                      words: [
                        {<kadmin>}
                        {<-c>}
                        {($ Id.VSub_DollarName KRB5CCNAME)}
                        {<-q>}
                        {(DQ ($ Id.VSub_DollarName ktaddsubcommand))}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '1>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName TMP_FILE)}
                        )
                        (redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<1>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (C {<egrep>} {<-s>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} 
                                {
                                  (DQ <'added to keytab WRFILE:'> 
                                    ($ Id.VSub_DollarName KRB5_KEYTAB_FILE) <.>
                                  )
                                }
                              )
                            right: <Id.Eof_RParen _>
                          )
                        )
                      } {($ Id.VSub_DollarName TMP_FILE)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_ne
                                          left: {($ Id.VSub_QMark '?')}
                                          right: {<0>}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: (C {<cat>} {($ Id.VSub_DollarName TMP_FILE)})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Simple
                              words: [
                                {<printf>}
                                {
                                  (DQ <Id.Lit_BadBackslash '\\'> <n> 
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (C {<gettext>} {(DQ <'kadmin: ktadd of %s failed, exiting'>)})
                                      right: <Id.Eof_RParen _>
                                    ) <.> <Id.Lit_BadBackslash '\\'> <n>
                                  )
                                }
                                {($ Id.VSub_DollarName service_princ)}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (C {<error_message>})
                          ]
                          spids: [1257 1270]
                        )
                      ]
                      else_action: [
                        (C {<printf>} 
                          {
                            (DQ 
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: (C {<gettext>} {(DQ <'%s entry ADDED to keytab'>)})
                                right: <Id.Eof_RParen _>
                              ) <.> <Id.Lit_BadBackslash '\\'> <n>
                            )
                          } {($ Id.VSub_DollarName service_princ)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: writeup_krb5_conf
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<dh>})
            (C {<printf>} 
              {
                (DQ <Id.Lit_BadBackslash '\\'> <n> 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<gettext>} {(DQ <'Setting up %s'>)})
                    right: <Id.Eof_RParen _>
                  ) <.> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                )
              } {($ Id.VSub_DollarName KRB5_CONFIG_FILE)}
            )
            (command.Simple
              words: [{<exec>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '3>'>
                  loc: (redir_loc.Fd fd:3)
                  arg: {($ Id.VSub_DollarName KRB5_CONFIG)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_ne
                                  left: {($ Id.VSub_QMark '?')}
                                  right: {<0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <n> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <'Can not write to %s, exiting'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                        {($ Id.VSub_DollarName KRB5_CONFIG)}
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [1377 1390]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [{<printf>} {(DQ <'[libdefaults]'> <Id.Lit_BadBackslash '\\'> <n>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName no_keytab)}
                                  right: {<yes>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <'tverify_ap_req_nofail = false'> 
                            <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_GreatAnd '1>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<3>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [1435 1448]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName dns_lookup)}
                                  right: {<yes>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <t> ($ Id.VSub_DollarName dnsarg) <' = on'> 
                            <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_GreatAnd '1>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<3>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {($ Id.VSub_DollarName dnsarg)}
                                          right: {<dns_lookup_kdc>}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<printf>}
                                {
                                  (DQ <Id.Lit_BadBackslash '\\'> <'tdefault_realm = '> 
                                    ($ Id.VSub_DollarName realm) <Id.Lit_BadBackslash '\\'> <n>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '1>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<3>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.Simple
                              words: [
                                {<printf>}
                                {
                                  (DQ <Id.Lit_BadBackslash '\\'> <'n[domain_realm]'> 
                                    <Id.Lit_BadBackslash '\\'> <n>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '1>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<3>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.Unary
                                                  op_id: Id.BoolUnary_n
                                                  child: {($ Id.VSub_DollarName fkdc_list)}
                                                )
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ForEach
                                      iter_names: [kdc]
                                      iterable: 
                                        (for_iter.Words
                                          words: [{($ Id.VSub_DollarName fkdc_list)}]
                                        )
                                      body: 
                                        (command.DoGroup
                                          children: [
                                            (command.Simple
                                              words: [
                                                {<printf>}
                                                {
                                                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                                                    ($ Id.VSub_DollarName kdc) <' = '> ($ Id.VSub_DollarName realm) <Id.Lit_BadBackslash '\\'> <n>
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_GreatAnd '1>&'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {<3>}
                                                )
                                              ]
                                              more_env: []
                                              do_fork: T
                                            )
                                          ]
                                        )
                                      redirects: []
                                    )
                                  ]
                                  spids: [1541 1552]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (command.Simple
                              words: [
                                {<printf>}
                                {
                                  (DQ <Id.Lit_BadBackslash '\\'> <t> ($ Id.VSub_DollarName FKDC) <' = '> 
                                    ($ Id.VSub_DollarName realm) <Id.Lit_BadBackslash '\\'> <n>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '1>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<3>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.Simple
                              words: [
                                {<printf>}
                                {
                                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                                    ($ Id.VSub_DollarName client_machine) <' = '> ($ Id.VSub_DollarName realm) <Id.Lit_BadBackslash '\\'> <n>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '1>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<3>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.Unary
                                                  op_id: Id.BoolUnary_z
                                                  child: {($ Id.VSub_DollarName short_fqdn)}
                                                )
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Simple
                                      words: [
                                        {<printf>}
                                        {
                                          (DQ <Id.Lit_BadBackslash '\\'> <t.> 
                                            ($ Id.VSub_DollarName domain) <' = '> ($ Id.VSub_DollarName realm) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '1>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<3>}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [1621 1632]
                                )
                              ]
                              else_action: [
                                (command.Simple
                                  words: [
                                    {<printf>}
                                    {
                                      (DQ <Id.Lit_BadBackslash '\\'> <t.> 
                                        ($ Id.VSub_DollarName short_fqdn) <' = '> ($ Id.VSub_DollarName realm) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '1>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<3>}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.Unary
                                                  op_id: Id.BoolUnary_n
                                                  child: {($ Id.VSub_DollarName domain_list)}
                                                )
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ForEach
                                      iter_names: [dh]
                                      iterable: 
                                        (for_iter.Words
                                          words: [{($ Id.VSub_DollarName domain_list)}]
                                        )
                                      body: 
                                        (command.DoGroup
                                          children: [
                                            (command.Simple
                                              words: [
                                                {<printf>}
                                                {
                                                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                                                    ($ Id.VSub_DollarName dh) <' = '> ($ Id.VSub_DollarName realm) <Id.Lit_BadBackslash '\\'> <n>
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_GreatAnd '1>&'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {<3>}
                                                )
                                              ]
                                              more_env: []
                                              do_fork: T
                                            )
                                          ]
                                        )
                                      redirects: []
                                    )
                                  ]
                                  spids: [1677 1688]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                          spids: [1498 1511]
                        )
                      ]
                      else_action: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobEqual
                                              left: {($ Id.VSub_DollarName dnsarg)}
                                              right: {<dns_lookup_realm>}
                                            )
                                          redirects: []
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.Simple
                                  words: [
                                    {<printf>}
                                    {
                                      (DQ <Id.Lit_BadBackslash '\\'> <'tdefault_realm = '> 
                                        ($ Id.VSub_DollarName realm) <Id.Lit_BadBackslash '\\'> <n>
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '1>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<3>}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                                (command.Simple
                                  words: [
                                    {<printf>}
                                    {
                                      (DQ <Id.Lit_BadBackslash '\\'> <'n[realms]'> 
                                        <Id.Lit_BadBackslash '\\'> <n>
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '1>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<3>}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                                (command.Simple
                                  words: [
                                    {<printf>}
                                    {
                                      (DQ <Id.Lit_BadBackslash '\\'> <t> ($ Id.VSub_DollarName realm) 
                                        <' = {'> <Id.Lit_BadBackslash '\\'> <n>
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '1>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<3>}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (command.DBracket
                                                  expr: 
                                                    (bool_expr.Unary
                                                      op_id: Id.BoolUnary_n
                                                      child: {($ Id.VSub_DollarName kdc_list)}
                                                    )
                                                  redirects: []
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.ForEach
                                          iter_names: [kdc]
                                          iterable: 
                                            (for_iter.Words
                                              words: [{($ Id.VSub_DollarName kdc_list)}]
                                            )
                                          body: 
                                            (command.DoGroup
                                              children: [
                                                (command.Simple
                                                  words: [
                                                    {<printf>}
                                                    {
                                                      (DQ <Id.Lit_BadBackslash '\\'> <t> 
                                                        <Id.Lit_BadBackslash '\\'> <'tkdc = '> ($ Id.VSub_DollarName kdc) <Id.Lit_BadBackslash '\\'> <n>
                                                      )
                                                    }
                                                  ]
                                                  redirects: [
                                                    (redir
                                                      op: <Id.Redir_GreatAnd '1>&'>
                                                      loc: (redir_loc.Fd fd:1)
                                                      arg: {<3>}
                                                    )
                                                  ]
                                                  more_env: []
                                                  do_fork: T
                                                )
                                              ]
                                            )
                                          redirects: []
                                        )
                                      ]
                                      spids: [1786 1797]
                                    )
                                  ]
                                  else_action: [
                                    (command.Simple
                                      words: [
                                        {<printf>}
                                        {
                                          (DQ <Id.Lit_BadBackslash '\\'> <t> <Id.Lit_BadBackslash '\\'> 
                                            <'tkdc = '> ($ Id.VSub_DollarName KDC) <Id.Lit_BadBackslash '\\'> <n>
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '1>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<3>}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.Simple
                                  words: [
                                    {<printf>}
                                    {
                                      (DQ <Id.Lit_BadBackslash '\\'> <t> <Id.Lit_BadBackslash '\\'> 
                                        <'tadmin_server = '> ($ Id.VSub_DollarName KDC) <Id.Lit_BadBackslash '\\'> <n>
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '1>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<3>}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (command.DBracket
                                                  expr: 
                                                    (bool_expr.Binary
                                                      op_id: Id.BoolBinary_GlobDEqual
                                                      left: {($ Id.VSub_DollarName non_solaris)}
                                                      right: {<yes>}
                                                    )
                                                  redirects: []
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.Simple
                                          words: [
                                            {<printf>}
                                            {
                                              (DQ <Id.Lit_BadBackslash '\\'> <n> 
                                                <Id.Lit_BadBackslash '\\'> <t> <Id.Lit_BadBackslash '\\'> <'tkpasswd_protocol = SET_CHANGE'> <Id.Lit_BadBackslash '\\'> <n>
                                              )
                                            }
                                          ]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_GreatAnd '1>&'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {<3>}
                                            )
                                          ]
                                          more_env: []
                                          do_fork: T
                                        )
                                      ]
                                      spids: [1869 1882]
                                    )
                                  ]
                                  else_action: []
                                  redirects: []
                                )
                                (command.Simple
                                  words: [
                                    {<printf>}
                                    {
                                      (DQ <Id.Lit_BadBackslash '\\'> <'t}'> <Id.Lit_BadBackslash '\\'> 
                                        <n> <Id.Lit_BadBackslash '\\'> <n>
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '1>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<3>}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                              ]
                              spids: [1728 1741]
                            )
                          ]
                          else_action: [
                            (command.Simple
                              words: [
                                {<printf>}
                                {
                                  (DQ <Id.Lit_BadBackslash '\\'> <'tdefault_realm = '> 
                                    ($ Id.VSub_DollarName realm) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '1>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<3>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1467 1480]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<printf>}
                    {
                      (DQ <Id.Lit_BadBackslash '\\'> <'tdefault_realm = '> ($ Id.VSub_DollarName realm) 
                        <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
                  more_env: []
                  do_fork: T
                )
                (command.Simple
                  words: [{<printf>} {(DQ <'[realms]'> <Id.Lit_BadBackslash '\\'> <n>)}]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
                  more_env: []
                  do_fork: T
                )
                (command.Simple
                  words: [
                    {<printf>}
                    {
                      (DQ <Id.Lit_BadBackslash '\\'> <t> ($ Id.VSub_DollarName realm) <' = {'> 
                        <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
                  more_env: []
                  do_fork: T
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_n
                                      child: {($ Id.VSub_DollarName kdc_list)}
                                    )
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ForEach
                          iter_names: [kdc]
                          iterable: (for_iter.Words words:[{($ Id.VSub_DollarName kdc_list)}])
                          body: 
                            (command.DoGroup
                              children: [
                                (command.Simple
                                  words: [
                                    {<printf>}
                                    {
                                      (DQ <Id.Lit_BadBackslash '\\'> <t> <Id.Lit_BadBackslash '\\'> 
                                        <'tkdc = '> ($ Id.VSub_DollarName kdc) <Id.Lit_BadBackslash '\\'> <n>
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '1>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<3>}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                              ]
                            )
                          redirects: []
                        )
                      ]
                      spids: [1992 2003]
                    )
                  ]
                  else_action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <t> <Id.Lit_BadBackslash '\\'> <'tkdc = '> 
                            ($ Id.VSub_DollarName KDC) <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_GreatAnd '1>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<3>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  words: [
                    {<printf>}
                    {
                      (DQ <Id.Lit_BadBackslash '\\'> <t> <Id.Lit_BadBackslash '\\'> <'tadmin_server = '> 
                        ($ Id.VSub_DollarName KDC) <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
                  more_env: []
                  do_fork: T
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {($ Id.VSub_DollarName non_solaris)}
                                      right: {<yes>}
                                    )
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [
                            {<printf>}
                            {
                              (DQ <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <t> 
                                <Id.Lit_BadBackslash '\\'> <'tkpasswd_protocol = SET_CHANGE'> <Id.Lit_BadBackslash '\\'> <n>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<3>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      spids: [2075 2088]
                    )
                  ]
                  else_action: []
                  redirects: []
                )
                (command.Simple
                  words: [
                    {<printf>}
                    {
                      (DQ <Id.Lit_BadBackslash '\\'> <'t}'> <Id.Lit_BadBackslash '\\'> <n> 
                        <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
                  more_env: []
                  do_fork: T
                )
                (command.Simple
                  words: [{<printf>} {(DQ <'[domain_realm]'> <Id.Lit_BadBackslash '\\'> <n>)}]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
                  more_env: []
                  do_fork: T
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_n
                                      child: {($ Id.VSub_DollarName fkdc_list)}
                                    )
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ForEach
                          iter_names: [kdc]
                          iterable: (for_iter.Words words:[{($ Id.VSub_DollarName fkdc_list)}])
                          body: 
                            (command.DoGroup
                              children: [
                                (command.Simple
                                  words: [
                                    {<printf>}
                                    {
                                      (DQ <Id.Lit_BadBackslash '\\'> <t> ($ Id.VSub_DollarName kdc) 
                                        <' = '> ($ Id.VSub_DollarName realm) <Id.Lit_BadBackslash '\\'> <n>
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '1>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<3>}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                              ]
                            )
                          redirects: []
                        )
                      ]
                      spids: [2139 2150]
                    )
                  ]
                  else_action: []
                  redirects: []
                )
                (command.Simple
                  words: [
                    {<printf>}
                    {
                      (DQ <Id.Lit_BadBackslash '\\'> <t> ($ Id.VSub_DollarName FKDC) <' = '> 
                        ($ Id.VSub_DollarName realm) <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
                  more_env: []
                  do_fork: T
                )
                (command.Simple
                  words: [
                    {<printf>}
                    {
                      (DQ <Id.Lit_BadBackslash '\\'> <t> ($ Id.VSub_DollarName client_machine) <' = '> 
                        ($ Id.VSub_DollarName realm) <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
                  more_env: []
                  do_fork: T
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_z
                                      child: {($ Id.VSub_DollarName short_fqdn)}
                                    )
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [
                            {<printf>}
                            {
                              (DQ <Id.Lit_BadBackslash '\\'> <t.> ($ Id.VSub_DollarName domain) <' = '> 
                                ($ Id.VSub_DollarName realm) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<3>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      spids: [2219 2230]
                    )
                  ]
                  else_action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <t.> ($ Id.VSub_DollarName short_fqdn) <' = '> 
                            ($ Id.VSub_DollarName realm) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_GreatAnd '1>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<3>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  redirects: []
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_n
                                      child: {($ Id.VSub_DollarName domain_list)}
                                    )
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ForEach
                          iter_names: [dh]
                          iterable: (for_iter.Words words:[{($ Id.VSub_DollarName domain_list)}])
                          body: 
                            (command.DoGroup
                              children: [
                                (command.Simple
                                  words: [
                                    {<printf>}
                                    {
                                      (DQ <Id.Lit_BadBackslash '\\'> <t> ($ Id.VSub_DollarName dh) 
                                        <' = '> ($ Id.VSub_DollarName realm) <Id.Lit_BadBackslash '\\'> <n>
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '1>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<3>}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                              ]
                            )
                          redirects: []
                        )
                      ]
                      spids: [2275 2286]
                    )
                  ]
                  else_action: []
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<printf>} {(DQ <'[logging]'> <Id.Lit_BadBackslash '\\'> <n>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <'tdefault = FILE:/var/krb5/kdc.log'> 
                    <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <'tkdc = FILE:/var/krb5/kdc.log'> 
                    <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <'tkdc_rotate = {'> <Id.Lit_BadBackslash '\\'> <n> 
                    <Id.Lit_BadBackslash '\\'> <t> <Id.Lit_BadBackslash '\\'> <'tperiod = 1d'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> 
                    <t> <Id.Lit_BadBackslash '\\'> <'tversions = 10'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> 
                    <'t}'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [{<printf>} {(DQ <'[appdefaults]'> <Id.Lit_BadBackslash '\\'> <n>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <'tkinit = {'> <Id.Lit_BadBackslash '\\'> <n> 
                    <Id.Lit_BadBackslash '\\'> <t> <Id.Lit_BadBackslash '\\'> <'trenewable = true'> <Id.Lit_BadBackslash '\\'> <n> 
                    <Id.Lit_BadBackslash '\\'> <t> <Id.Lit_BadBackslash '\\'> <'tforwardable = true'> <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName no_keytab)}
                                  right: {<yes>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <t> <Id.Lit_BadBackslash '\\'> 
                            <'tno_addresses = true'> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_GreatAnd '1>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<3>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [2434 2447]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [{<printf>} {(DQ <Id.Lit_BadBackslash '\\'> <'t}'> <Id.Lit_BadBackslash '\\'> <n>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: ask
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<Id.Lit_VarLike 'question='> ($ Id.VSub_Number 1)})
            (C {<typeset>} {<Id.Lit_VarLike 'default_answer='> ($ Id.VSub_Number 2)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName default_answer)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<printf>} {(DQ ($ Id.VSub_DollarName question) <' :'>)})]
                  spids: [2503 2514]
                )
              ]
              else_action: [
                (C {<printf>} 
                  {
                    (DQ ($ Id.VSub_DollarName question) <' ['> ($ Id.VSub_DollarName default_answer) 
                      <']: '>
                    )
                  }
                )
              ]
              redirects: []
            )
            (C {<read>} {<answer>})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName answer))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'answer='> name:answer)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_DollarName default_answer))}
                      spids: [2556]
                    )
                  ]
                  redirects: []
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: yesno
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<Id.Lit_VarLike 'question='> (DQ ($ Id.VSub_Number 1))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'answer='> name:answer)
                  op: assign_op.Equal
                  rhs: (rhs_word.Empty)
                  spids: [2580]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'yn='> name:yn)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<printf>} 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: (C {<gettext>} {(DQ <'y/n'>)})
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2583]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'y='> name:y)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<printf>} 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: (C {<gettext>} {(DQ <y>)})
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2601]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<printf>} 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: (C {<gettext>} {(DQ <n>)})
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2619]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'yes='> name:yes)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<printf>} 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: (C {<gettext>} {(DQ <yes>)})
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2637]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'no='> name:no)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<printf>} 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: (C {<gettext>} {(DQ <no>)})
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2655]
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: {($ Id.VSub_DollarName answer)}
                            )
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (C {<ask>} {(DQ ($ Id.VSub_DollarName question))} {($ Id.VSub_DollarName yn)})
                    (command.Case
                      to_match: {($ Id.VSub_DollarName answer)}
                      arms: [
                        (case_arm
                          pat_list: [{($ Id.VSub_DollarName y)} {($ Id.VSub_DollarName yes)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'answer='> name:answer)
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                  spids: [2709]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2704 2707 2711 -1]
                        )
                        (case_arm
                          pat_list: [{($ Id.VSub_DollarName n)} {($ Id.VSub_DollarName no)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'answer='> name:answer)
                                  op: assign_op.Equal
                                  rhs: {<no>}
                                  spids: [2719]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2714 2717 2721 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'answer='> name:answer)
                                  op: assign_op.Equal
                                  rhs: (rhs_word.Empty)
                                  spids: [2727]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2724 2725 2728 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: query
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<yesno>} {(DQ ($ Id.VSub_Star '*'))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName answer)}
                                  right: {<no>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ <Id.Lit_BadBackslash '\\'> <t> 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<gettext>} {(DQ <'No action performed'>)})
                            right: <Id.Eof_RParen _>
                          ) <.> <Id.Lit_BadBackslash '\\'> <n>
                        )
                      }
                    )
                  ]
                  spids: [2754 2767]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: read_profile
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<param>} {<value>})
            (C {<typeset>} {<Id.Lit_VarLike 'file='> (DQ ($ Id.VSub_Number 1))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.LogicalNot
                                      child: 
                                        (bool_expr.Unary
                                          op_id: Id.BoolUnary_d
                                          child: {($ Id.VSub_DollarName file)}
                                        )
                                    )
                                  right: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_r
                                      child: {($ Id.VSub_DollarName file)}
                                    )
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: (condition.Shell commands:[(C {<read>} {<param>} {<value>})])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Case
                              to_match: {($ Id.VSub_DollarName param)}
                              arms: [
                                (case_arm
                                  pat_list: [{<REALM>}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.DBracket
                                                      expr: 
                                                        (bool_expr.Unary
                                                          op_id: Id.BoolUnary_z
                                                          child: {($ Id.VSub_DollarName realm)}
                                                        )
                                                      redirects: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'realm='>
                                                      name: realm
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ ($ Id.VSub_DollarName value))}
                                                  spids: [2875]
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: 
                                                        (sh_lhs_expr.Name
                                                          left: <Id.Lit_VarLike 'checkval='>
                                                          name: checkval
                                                        )
                                                      op: assign_op.Equal
                                                      rhs: {(DQ <REALM>)}
                                                      spids: [2881]
                                                    )
                                                  ]
                                                  redirects: []
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                            (C {<check_value>} {($ Id.VSub_DollarName realm)})
                                          ]
                                          spids: [2861 2872]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                  spids: [2858 2859 2895 -1]
                                )
                                (case_arm
                                  pat_list: [{<KDC>}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.DBracket
                                                      expr: 
                                                        (bool_expr.Unary
                                                          op_id: Id.BoolUnary_z
                                                          child: {($ Id.VSub_DollarName KDC)}
                                                        )
                                                      redirects: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'KDC='>
                                                      name: KDC
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ ($ Id.VSub_DollarName value))}
                                                  spids: [2915]
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: 
                                                        (sh_lhs_expr.Name
                                                          left: <Id.Lit_VarLike 'checkval='>
                                                          name: checkval
                                                        )
                                                      op: assign_op.Equal
                                                      rhs: {(DQ <KDC>)}
                                                      spids: [2921]
                                                    )
                                                  ]
                                                  redirects: []
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                            (C {<check_value>} {($ Id.VSub_DollarName KDC)})
                                          ]
                                          spids: [2901 2912]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                  spids: [2898 2899 2935 -1]
                                )
                                (case_arm
                                  pat_list: [{<ADMIN>}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.DBracket
                                                      expr: 
                                                        (bool_expr.Unary
                                                          op_id: Id.BoolUnary_z
                                                          child: {($ Id.VSub_DollarName ADMIN_PRINC)}
                                                        )
                                                      redirects: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'ADMIN_PRINC='>
                                                      name: ADMIN_PRINC
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ ($ Id.VSub_DollarName value))}
                                                  spids: [2955]
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'checkval='>
                                                      name: checkval
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ <ADMIN_PRINC>)}
                                                  spids: [2961]
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (C {<check_value>} {($ Id.VSub_DollarName ADMIN_PRINC)})
                                          ]
                                          spids: [2941 2952]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                  spids: [2938 2939 2975 -1]
                                )
                                (case_arm
                                  pat_list: [{<FILEPATH>}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.DBracket
                                                      expr: 
                                                        (bool_expr.Unary
                                                          op_id: Id.BoolUnary_z
                                                          child: {($ Id.VSub_DollarName filepath)}
                                                        )
                                                      redirects: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'filepath='>
                                                      name: filepath
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ ($ Id.VSub_DollarName value))}
                                                  spids: [2995]
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [2981 2992]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                  spids: [2978 2979 3004 -1]
                                )
                                (case_arm
                                  pat_list: [{<NFS>}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.DBracket
                                                      expr: 
                                                        (bool_expr.Unary
                                                          op_id: Id.BoolUnary_z
                                                          child: {($ Id.VSub_DollarName add_nfs)}
                                                        )
                                                      redirects: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: 
                                                    (condition.Shell
                                                      commands: [
                                                        (command.Sentence
                                                          child: 
                                                            (command.DBracket
                                                              expr: 
                                                                (bool_expr.Binary
                                                                  op_id: Id.BoolBinary_GlobDEqual
                                                                  left: {($ Id.VSub_DollarName value)}
                                                                  right: {<1>}
                                                                )
                                                              redirects: []
                                                            )
                                                          terminator: <Id.Op_Semi _>
                                                        )
                                                      ]
                                                    )
                                                  action: [
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              left: <Id.Lit_VarLike 'add_nfs='>
                                                              name: add_nfs
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: {<yes>}
                                                          spids: [3040]
                                                        )
                                                      ]
                                                      redirects: []
                                                    )
                                                  ]
                                                  spids: [3024 3037]
                                                )
                                              ]
                                              else_action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: 
                                                        (sh_lhs_expr.Name
                                                          left: <Id.Lit_VarLike 'add_nfs='>
                                                          name: add_nfs
                                                        )
                                                      op: assign_op.Equal
                                                      rhs: {<no>}
                                                      spids: [3047]
                                                    )
                                                  ]
                                                  redirects: []
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [3010 3021]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                  spids: [3007 3008 3057 -1]
                                )
                                (case_arm
                                  pat_list: [{<NOKEY>}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.DBracket
                                                      expr: 
                                                        (bool_expr.Unary
                                                          op_id: Id.BoolUnary_z
                                                          child: {($ Id.VSub_DollarName no_keytab)}
                                                        )
                                                      redirects: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: 
                                                    (condition.Shell
                                                      commands: [
                                                        (command.Sentence
                                                          child: 
                                                            (command.DBracket
                                                              expr: 
                                                                (bool_expr.Binary
                                                                  op_id: Id.BoolBinary_GlobDEqual
                                                                  left: {($ Id.VSub_DollarName value)}
                                                                  right: {<1>}
                                                                )
                                                              redirects: []
                                                            )
                                                          terminator: <Id.Op_Semi _>
                                                        )
                                                      ]
                                                    )
                                                  action: [
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              left: <Id.Lit_VarLike 'no_keytab='>
                                                              name: no_keytab
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: {<yes>}
                                                          spids: [3093]
                                                        )
                                                      ]
                                                      redirects: []
                                                    )
                                                  ]
                                                  spids: [3077 3090]
                                                )
                                              ]
                                              else_action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: 
                                                        (sh_lhs_expr.Name
                                                          left: <Id.Lit_VarLike 'no_keytab='>
                                                          name: no_keytab
                                                        )
                                                      op: assign_op.Equal
                                                      rhs: {<no>}
                                                      spids: [3100]
                                                    )
                                                  ]
                                                  redirects: []
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [3063 3074]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                  spids: [3060 3061 3110 -1]
                                )
                                (case_arm
                                  pat_list: [{<NOSOL>}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.DBracket
                                                      expr: 
                                                        (bool_expr.Unary
                                                          op_id: Id.BoolUnary_z
                                                          child: {($ Id.VSub_DollarName non_solaris)}
                                                        )
                                                      redirects: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: 
                                                    (condition.Shell
                                                      commands: [
                                                        (command.Sentence
                                                          child: 
                                                            (command.DBracket
                                                              expr: 
                                                                (bool_expr.Binary
                                                                  op_id: Id.BoolBinary_GlobDEqual
                                                                  left: {($ Id.VSub_DollarName value)}
                                                                  right: {<1>}
                                                                )
                                                              redirects: []
                                                            )
                                                          terminator: <Id.Op_Semi _>
                                                        )
                                                      ]
                                                    )
                                                  action: [
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              left: <Id.Lit_VarLike 'non_solaris='>
                                                              name: non_solaris
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: {<yes>}
                                                          spids: [3146]
                                                        )
                                                      ]
                                                      redirects: []
                                                    )
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              left: <Id.Lit_VarLike 'no_keytab='>
                                                              name: no_keytab
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: {<yes>}
                                                          spids: [3150]
                                                        )
                                                      ]
                                                      redirects: []
                                                    )
                                                  ]
                                                  spids: [3130 3143]
                                                )
                                              ]
                                              else_action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: 
                                                        (sh_lhs_expr.Name
                                                          left: <Id.Lit_VarLike 'non_solaris='>
                                                          name: non_solaris
                                                        )
                                                      op: assign_op.Equal
                                                      rhs: {<no>}
                                                      spids: [3157]
                                                    )
                                                  ]
                                                  redirects: []
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [3116 3127]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                  spids: [3113 3114 3167 -1]
                                )
                                (case_arm
                                  pat_list: [{<LHN>}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.DBracket
                                                      expr: 
                                                        (bool_expr.Unary
                                                          op_id: Id.BoolUnary_z
                                                          child: {($ Id.VSub_DollarName logical_hn)}
                                                        )
                                                      redirects: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'logical_hn='>
                                                      name: logical_hn
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ ($ Id.VSub_DollarName value))}
                                                  spids: [3187]
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'checkval='>
                                                      name: checkval
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ <LOGICAL_HOSTNAME>)}
                                                  spids: [3193]
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (C {<check_value>} {($ Id.VSub_DollarName logical_hn)})
                                          ]
                                          spids: [3173 3184]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                  spids: [3170 3171 3207 -1]
                                )
                                (case_arm
                                  pat_list: [{<DNSLOOKUP>}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.DBracket
                                                      expr: 
                                                        (bool_expr.Unary
                                                          op_id: Id.BoolUnary_z
                                                          child: {($ Id.VSub_DollarName dnsarg)}
                                                        )
                                                      redirects: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'dnsarg='>
                                                      name: dnsarg
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ ($ Id.VSub_DollarName value))}
                                                  spids: [3227]
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'checkval='>
                                                      name: checkval
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ <DNS_OPTIONS>)}
                                                  spids: [3233]
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (C {<check_value>} {($ Id.VSub_DollarName dnsarg)})
                                          ]
                                          spids: [3213 3224]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                  spids: [3210 3211 3247 -1]
                                )
                                (case_arm
                                  pat_list: [{<FQDN>}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.DBracket
                                                      expr: 
                                                        (bool_expr.Unary
                                                          op_id: Id.BoolUnary_z
                                                          child: {($ Id.VSub_DollarName fqdnlist)}
                                                        )
                                                      redirects: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'fqdnlist='>
                                                      name: fqdnlist
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ ($ Id.VSub_DollarName value))}
                                                  spids: [3267]
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'checkval='>
                                                      name: checkval
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ <FQDN>)}
                                                  spids: [3273]
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (C {<check_value>} {($ Id.VSub_DollarName fqdnlist)})
                                            (C {<verify_fqdnlist>} 
                                              {(DQ ($ Id.VSub_DollarName fqdnlist))}
                                            )
                                          ]
                                          spids: [3253 3264]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                  spids: [3250 3251 3294 -1]
                                )
                                (case_arm
                                  pat_list: [{<MSAD>}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.DBracket
                                                      expr: 
                                                        (bool_expr.Unary
                                                          op_id: Id.BoolUnary_z
                                                          child: {($ Id.VSub_DollarName msad)}
                                                        )
                                                      redirects: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: 
                                                    (condition.Shell
                                                      commands: [
                                                        (command.Sentence
                                                          child: 
                                                            (command.DBracket
                                                              expr: 
                                                                (bool_expr.Binary
                                                                  op_id: Id.BoolBinary_GlobDEqual
                                                                  left: {($ Id.VSub_DollarName value)}
                                                                  right: {<1>}
                                                                )
                                                              redirects: []
                                                            )
                                                          terminator: <Id.Op_Semi _>
                                                        )
                                                      ]
                                                    )
                                                  action: [
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              left: <Id.Lit_VarLike 'msad='>
                                                              name: msad
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: {<yes>}
                                                          spids: [3330]
                                                        )
                                                      ]
                                                      redirects: []
                                                    )
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              left: <Id.Lit_VarLike 'non_solaris='>
                                                              name: non_solaris
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: {<yes>}
                                                          spids: [3334]
                                                        )
                                                      ]
                                                      redirects: []
                                                    )
                                                  ]
                                                  spids: [3314 3327]
                                                )
                                              ]
                                              else_action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: 
                                                        (sh_lhs_expr.Name
                                                          left: <Id.Lit_VarLike 'msad='>
                                                          name: msad
                                                        )
                                                      op: assign_op.Equal
                                                      rhs: {<no>}
                                                      spids: [3341]
                                                    )
                                                  ]
                                                  redirects: []
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [3300 3311]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                  spids: [3297 3298 3351 -1]
                                )
                              ]
                              redirects: []
                            )
                          ]
                        )
                      redirects: [
                        (redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {($ Id.VSub_DollarName file)}
                        )
                      ]
                    )
                  ]
                  spids: [2817 2836]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<printf>}
                    {
                      (DQ <Id.Lit_BadBackslash '\\'> <n> 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (C {<gettext>} 
                              {
                                (DQ <'The kclient profile '> 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\`'>
                                    ch: '`'
                                  ) <'%s\' is not valid, exiting'>
                                )
                              }
                            )
                          right: <Id.Eof_RParen _>
                        ) <.> <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                    {($ Id.VSub_DollarName file)}
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  more_env: []
                  do_fork: T
                )
                (C {<error_message>})
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: ping_check
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<Id.Lit_VarLike 'machine='> (DQ ($ Id.VSub_Number 1))})
            (C {<typeset>} {<Id.Lit_VarLike 'string='> (DQ ($ Id.VSub_Number 2))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              words: [{<ping>} {($ Id.VSub_DollarName machine)} {<2>}]
                              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>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<Id.Lit_Colon ':'>})]
                  spids: [3423 3439]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<printf>}
                    {
                      (DQ <Id.Lit_BadBackslash '\\'> <n> 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<gettext>} {(DQ <'%s %s is unreachable, exiting'>)})
                          right: <Id.Eof_RParen _>
                        ) <.> <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                    {($ Id.VSub_DollarName string)}
                    {($ Id.VSub_DollarName machine)}
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  more_env: []
                  do_fork: T
                )
                (C {<error_message>})
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_z
                                      child: {($ Id.VSub_DollarName profile)}
                                    )
                                  right: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {($ Id.VSub_DollarName string)}
                                      right: {<KDC>}
                                    )
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <n> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (C {<gettext>} 
                                  {
                                    (DQ 
                                      <
'Note, this system and the KDC\'s time must be within 5 minutes of each other for Kerberos to function'
                                      >
                                    )
                                  }
                                )
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (C {<gettext>} 
                                  {
                                    (DQ 
                                      <
'Both systems should run some form of time synchronization system like Network Time Protocol (NTP)'
                                      >
                                    )
                                  }
                                )
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Break break>)
                  ]
                  spids: [3488 3507]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: check_value
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<Id.Lit_VarLike 'arg='> (DQ ($ Id.VSub_Number 1))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName arg)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <n> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <'No input obtained for %s, exiting'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                        {($ Id.VSub_DollarName checkval)}
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [3581 3592]
                )
              ]
              else_action: [
                (command.Simple
                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName arg))}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName TMP_FILE)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<egrep>} {<-s>} {(SQ <'[*$^#!]+'>)} {($ Id.VSub_DollarName TMP_FILE)})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [
                            {<printf>}
                            {
                              (DQ <Id.Lit_BadBackslash '\\'> <n> 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (C {<gettext>} {(DQ <'Invalid input obtained for %s, exiting'>)})
                                  right: <Id.Eof_RParen _>
                                ) <.> <Id.Lit_BadBackslash '\\'> <n>
                              )
                            }
                            {($ Id.VSub_DollarName checkval)}
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (C {<error_message>})
                      ]
                      spids: [3635 3648]
                    )
                  ]
                  else_action: []
                  redirects: []
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: set_dns_value
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<-l>} {<Id.Lit_VarLike 'arg='> (DQ ($ Id.VSub_Number 1))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.LogicalOr
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {($ Id.VSub_DollarName arg)}
                                      right: {<dns_lookup_kdc>}
                                    )
                                  right: 
                                    (bool_expr.LogicalOr
                                      left: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {($ Id.VSub_DollarName arg)}
                                          right: {<dns_lookup_realm>}
                                        )
                                      right: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {($ Id.VSub_DollarName arg)}
                                          right: {<dns_fallback>}
                                        )
                                    )
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dns_lookup='> name:dns_lookup)
                          op: assign_op.Equal
                          rhs: {<yes>}
                          spids: [3735]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3703 3732]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {($ Id.VSub_DollarName arg)}
                                      right: {<none>}
                                    )
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'dns_lookup='>
                                  name: dns_lookup
                                )
                              op: assign_op.Equal
                              rhs: {<no>}
                              spids: [3758]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [3742 3755]
                    )
                  ]
                  else_action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <n> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <'Invalid DNS lookup option, exiting'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: verify_kdcs
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<Id.Lit_VarLike 'k_list='> (DQ ($ Id.VSub_Number 1))})
            (C {<typeset>} {<-l>} {<kdc>})
            (C {<typeset>} {<list>} {<fqhn>} {<f_list>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'kdc_list='> name:kdc_list)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ ($ Id.VSub_DollarName k_list))})
                              (C {<sed>} {(SQ <'s/,/ /g'>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [3829]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName k_list)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <n> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <'At least one KDC should be listed'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<usage>})
                  ]
                  spids: [3848 3859]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ForEach
              iter_names: [kdc]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName k_list)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobNEqual
                                          left: {($ Id.VSub_DollarName kdc)}
                                          right: {($ Id.VSub_DollarName KDC)}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'list='> name:list)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName list) <' '> ($ Id.VSub_DollarName kdc))
                                    }
                                  spids: [3920]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fkdc='> name:fkdc)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {($ Id.VSub_DollarName KLOOKUP)} 
                                            {($ Id.VSub_DollarName kdc)}
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [3928]
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              words: [{<ping>} {($ Id.VSub_DollarName fkdc)} {<2>}]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_Great '>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {<'/dev/null'>}
                                                )
                                              ]
                                              more_env: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [(C {<Id.Lit_Colon ':'>})]
                                  spids: [3938 3951]
                                )
                              ]
                              else_action: [
                                (command.Simple
                                  words: [
                                    {<printf>}
                                    {
                                      (DQ <Id.Lit_BadBackslash '\\'> <n> 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (C {<gettext>} 
                                              {(DQ <'%s %s is unreachable, no action performed'>)}
                                            )
                                          right: <Id.Eof_RParen _>
                                        ) <.> <Id.Lit_BadBackslash '\\'> <n>
                                      )
                                    }
                                    {(DQ <KDC>)}
                                    {($ Id.VSub_DollarName fkdc)}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<2>}
                                    )
                                  ]
                                  more_env: []
                                  do_fork: T
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f_list='> name:f_list)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName f_list) <' '> 
                                        ($ Id.VSub_DollarName fkdc)
                                      )
                                    }
                                  spids: [3990]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [3904 3917]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fkdc_list='> name:fkdc_list)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName f_list))}
                  spids: [4005]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'kdc_list='> name:kdc_list)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName list))}
                  spids: [4011]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: parse_service
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<Id.Lit_VarLike 'service_list='> ($ Id.VSub_Number 1)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'service_list='> name:service_list)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name service_list>
                        var_name: service_list
                        suffix_op: 
                          (suffix_op.PatSub
                            pat: {<','>}
                            replace: {<' '>}
                            replace_mode: Id.Lit_Slash
                            slash_tok: <Id.VOp2_Slash _>
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  spids: [4033]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [service]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName service_list)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'svc='> name:svc)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name service>
                                var_name: service
                                suffix_op: (suffix_op.Unary op:<Id.VOp1_Percent '%'> arg_word:{<':'>})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [4056]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'auth_type='> name:auth_type)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name service>
                                var_name: service
                                suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<':'>})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [4064]
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.LogicalOr
                              left: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName svc)}
                                )
                              right: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName auth_type)}
                                )
                            )
                          redirects: []
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                        )
                      ]
                    )
                    (C {<print>} {<-->} {($ Id.VSub_DollarName svc)} {($ Id.VSub_DollarName auth_type)})
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: verify_fqdnlist
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<Id.Lit_VarLike 'list='> (DQ ($ Id.VSub_Number 1))})
            (C {<typeset>} {<-l>} {<hostname>})
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'count='> <1>})
            (C {<typeset>} {<fqdnlist>} {<eachfqdn>} {<tmpvar>} {<fullhost>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'list='> name:list)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ ($ Id.VSub_DollarName list))})
                              (C {<tr>} {<-d>} {(DQ <' '>)})
                              (C {<tr>} {<-d>} {(DQ <Id.Lit_BadBackslash '\\'> <t>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [4147]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hostname='> name:hostname)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [(C {<uname>} {<-n>}) (C {<cut>} {<-d> (DQ <.>)} {<-f1>})]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [4178]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fqdnlist='> name:fqdnlist)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName client_machine)}
                  spids: [4197]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eachfqdn='> name:eachfqdn)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ ($ Id.VSub_DollarName list))})
                              (C {<cut>} {<-d> (DQ <','>)} {<-f> ($ Id.VSub_DollarName count)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [4202]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName eachfqdn)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <n> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (C {<gettext>} 
                                  {
                                    (DQ 
                                      <
'If the -f option is used, at least one FQDN should be listed'
                                      >
                                    )
                                  }
                                )
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<usage>})
                  ]
                  spids: [4224 4235]
                )
              ]
              else_action: [
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.LogicalNot
                                  child: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_z
                                      child: {($ Id.VSub_DollarName eachfqdn)}
                                    )
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tmpvar='> name:tmpvar)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (C {<echo>} {(DQ ($ Id.VSub_DollarName eachfqdn))})
                                          (C {<cut>} {<-d> (DQ <.>)} {<-f1>})
                                        ]
                                        negated: F
                                        stderr_indices: []
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                              spids: [4283]
                            )
                          ]
                          redirects: []
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Unary
                                              op_id: Id.BoolUnary_z
                                              child: {($ Id.VSub_DollarName tmpvar)}
                                            )
                                          redirects: []
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'fullhost='>
                                          name: fullhost
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ ($ Id.VSub_DollarName hostname) 
                                            ($ Id.VSub_DollarName eachfqdn)
                                          )
                                        }
                                      spids: [4318]
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              spids: [4304 4315]
                            )
                          ]
                          else_action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'fullhost='>
                                      name: fullhost
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName hostname) <.> 
                                        ($ Id.VSub_DollarName eachfqdn)
                                      )
                                    }
                                  spids: [4328]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          redirects: []
                        )
                        (C {<ping_check>} {($ Id.VSub_DollarName fullhost)} 
                          {
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <System>)})
                              right: <Id.Eof_RParen _>
                            )
                          }
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobDEqual
                                              left: {($ Id.VSub_DollarName fullhost)}
                                              right: {($ Id.VSub_DollarName client_machine)}
                                            )
                                          redirects: []
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [(C {<Id.Lit_Colon ':'>})]
                              spids: [4353 4366]
                            )
                          ]
                          else_action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'fqdnlist='>
                                      name: fqdnlist
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName fqdnlist) <' '> 
                                        ($ Id.VSub_DollarName fullhost)
                                      )
                                    }
                                  spids: [4375]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          redirects: []
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.DBracket
                                          expr: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobDEqual
                                              left: {($ Id.VSub_DollarName list)}
                                              right: 
                                                {<Id.Lit_Other '*'> <Id.Lit_Other ','> 
                                                  <Id.Lit_Other '*'>
                                                }
                                            )
                                          redirects: []
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.DParen
                                  child: 
                                    (arith_expr.BinaryAssign
                                      op_id: Id.Arith_Equal
                                      left: ($ Id.Lit_ArithVarLike count)
                                      right: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_Plus
                                          left: ($ Id.Lit_ArithVarLike count)
                                          right: {<Id.Lit_Digits 1>}
                                        )
                                    )
                                  redirects: []
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'eachfqdn='>
                                          name: eachfqdn
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (command_sub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (command.Pipeline
                                                children: [
                                                  (C {<echo>} {(DQ ($ Id.VSub_DollarName list))})
                                                  (C {<cut>} {<-d> (DQ <','>)} 
                                                    {<-f> ($ Id.VSub_DollarName count)}
                                                  )
                                                ]
                                                negated: F
                                                stderr_indices: []
                                              )
                                            right: <Id.Eof_RParen _>
                                          )
                                        }
                                      spids: [4419]
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              spids: [4387 4402]
                            )
                          ]
                          else_action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                          redirects: []
                        )
                      ]
                    )
                  redirects: []
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: setup_keytab
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<cname>} {<ask_fqdns>} {<current_release>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName ADMIN_PRINC)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ <Id.Lit_BadBackslash '\\'> <n> 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} 
                                {(DQ <'Enter the krb5 administrative principal to be used'>)}
                              )
                            right: <Id.Eof_RParen _>
                          ) <': '>
                        )
                      }
                    )
                    (C {<read>} {<ADMIN_PRINC>})
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'checkval='> name:checkval)
                              op: assign_op.Equal
                              rhs: {(DQ <ADMIN_PRINC>)}
                              spids: [4523]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<check_value>} {($ Id.VSub_DollarName ADMIN_PRINC)})
                  ]
                  spids: [4488 4499]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {(DQ ($ Id.VSub_DollarName ADMIN_PRINC))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName TMP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{($ Id.VSub_DollarName msad)})
                  redirects: []
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<egrep>} {<-s>} {(SQ <'\\/admin'>)} {($ Id.VSub_DollarName TMP_FILE)})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<Id.Lit_Colon ':'>})]
                  spids: [4561 4574]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<egrep>} {<-s>} {(SQ <'\\/'>)} {($ Id.VSub_DollarName TMP_FILE)})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [
                            {<printf>}
                            {
                              (DQ <Id.Lit_BadBackslash '\\'> <n> 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (C {<gettext>} 
                                      {(DQ <'Improper entry for krb5 admin principal, exiting'>)}
                                    )
                                  right: <Id.Eof_RParen _>
                                ) <.> <Id.Lit_BadBackslash '\\'> <n>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (C {<error_message>})
                      ]
                      spids: [4587 4600]
                    )
                  ]
                  else_action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'ADMIN_PRINC='>
                              name: ADMIN_PRINC
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: (C {<echo>} {(DQ ($ Id.VSub_DollarName ADMIN_PRINC) <'/admin'>)})
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [4630]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (C {<printf>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<gettext>} {(DQ <'Obtaining TGT for %s'>)})
                    right: <Id.Eof_RParen _>
                  ) <' ...'> <Id.Lit_BadBackslash '\\'> <n>
                )
              } {($ Id.VSub_DollarName ADMIN_PRINC)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cname='> name:cname)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<canon_resolve>} {($ Id.VSub_DollarName KDC)})
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [4667]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: {($ Id.VSub_DollarName cname)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<kinit>} {<-S>} {<'kadmin/'> ($ Id.VSub_DollarName cname)} 
                      {($ Id.VSub_DollarName ADMIN_PRINC)}
                    )
                  ]
                  spids: [4675 4686]
                )
              ]
              else_action: [
                (C {<kinit>} {<-S>} {<'kadmin/'> ($ Id.VSub_DollarName FKDC)} 
                  {($ Id.VSub_DollarName ADMIN_PRINC)}
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<klist>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '1>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName TMP_FILE)}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<egrep>} {<-s>} 
                                  {
                                    (DQ 
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: (C {<gettext>} {(DQ <'Valid starting'>)})
                                        right: <Id.Eof_RParen _>
                                      )
                                    )
                                  } {($ Id.VSub_DollarName TMP_FILE)}
                                )
                                (C {<egrep>} {<-s>} 
                                  {
                                    (DQ <'kadmin/'> ($ Id.VSub_DollarName FKDC) <'@'> 
                                      ($ Id.VSub_DollarName realm)
                                    )
                                  } {($ Id.VSub_DollarName TMP_FILE)}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<Id.Lit_Colon ':'>})]
                  spids: [4724 4758]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<printf>}
                    {
                      (DQ <Id.Lit_BadBackslash '\\'> <n> 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<gettext>} {(DQ <'kinit of %s failed, exiting'>)})
                          right: <Id.Eof_RParen _>
                        ) <.> <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                    {($ Id.VSub_DollarName ADMIN_PRINC)}
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  more_env: []
                  do_fork: T
                )
                (C {<error_message>})
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName options)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<query>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} 
                                {
                                  (DQ 
                                    <'Do you have multiple DNS domains spanning the Kerberos realm'>
                                  )
                                }
                              )
                            right: <Id.Eof_RParen _>
                          ) <' '> ($ Id.VSub_DollarName realm) <' ?'>
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ask_fqdns='> name:ask_fqdns)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName answer)}
                          spids: [4843]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {($ Id.VSub_DollarName ask_fqdns)}
                                          right: {<yes>}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<printf>} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {<gettext>} 
                                        {(DQ <'Enter a comma-separated list of DNS domain names'>)}
                                      )
                                    right: <Id.Eof_RParen _>
                                  ) <': '>
                                )
                              }
                            )
                            (C {<read>} {<fqdnlist>})
                            (C {<verify_fqdnlist>} {(DQ ($ Id.VSub_DollarName fqdnlist))})
                          ]
                          spids: [4847 4860]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fqdnlist='> name:fqdnlist)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName client_machine)}
                              spids: [4892]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [4813 4824]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_z
                                      child: {($ Id.VSub_DollarName fqdnlist)}
                                    )
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fqdnlist='> name:fqdnlist)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName client_machine)}
                              spids: [4916]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [4902 4913]
                    )
                  ]
                  else_action: []
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName add_nfs)}
                                  right: {<yes>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (C {<echo>})
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<call_kadmin>} {<nfs>})
                  ]
                  spids: [4927 4940]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Sentence child:(C {<echo>}) terminator:<Id.Op_Semi _>)
            (C {<call_kadmin>} {<host>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: setup_lhn
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<-l>} {<logical_hn>})
            (command.Simple
              words: [{<echo>} {(DQ ($ Id.VSub_DollarName logical_hn))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName TMP_FILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<egrep>} {<-s>} {(SQ <'[^.]\\.[^.]+$'>)} 
                              {($ Id.VSub_DollarName TMP_FILE)}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<Id.Lit_Colon ':'>})]
                  spids: [4996 5009]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<egrep>} {<-s>} {(SQ <'\\.+'>)} {($ Id.VSub_DollarName TMP_FILE)})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [
                            {<printf>}
                            {
                              (DQ <Id.Lit_BadBackslash '\\'> <n> 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (C {<gettext>} 
                                      {(DQ <'Improper format of logical hostname, exiting'>)}
                                    )
                                  right: <Id.Eof_RParen _>
                                ) <.> <Id.Lit_BadBackslash '\\'> <n>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (C {<error_message>})
                      ]
                      spids: [5022 5035]
                    )
                  ]
                  else_action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'logical_hn='> name:logical_hn)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<echo>} 
                                    {
                                      (DQ ($ Id.VSub_DollarName logical_hn) <.> 
                                        ($ Id.VSub_DollarName fqdn)
                                      )
                                    }
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [5073]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'client_machine='> name:client_machine)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName logical_hn)}
                  spids: [5092]
                )
              ]
              redirects: []
            )
            (C {<ping_check>} {($ Id.VSub_DollarName client_machine)} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<gettext>} {(DQ <System>)})
                  right: <Id.Eof_RParen _>
                )
              }
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: usage
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <n> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: (C {<gettext>} {(DQ <'Usage: kclient [ options ]'>)})
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: (C {<gettext>} {(DQ <'where options are any of the following'>)})
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (C {<gettext>} 
                          {
                            (DQ <'[ -D domain_list ]  configure a client that has mul\n'> 
                              <'tiple mappings of doamin and/or hosts to the default realm'>
                            )
                          }
                        )
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (C {<gettext>} 
                          {(DQ <'[ -K ]  configure a client that does not have host/service keys'>)}
                        )
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: (C {<gettext>} {(DQ <'[ -R realm ]  specifies the realm to use'>)})
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (C {<gettext>} 
                          {(DQ <'[ -T kdc_vendor ]  specifies which KDC vendor is the server'>)}
                        )
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (C {<gettext>} {(DQ <'[ -a adminuser ]  specifies the Kerberos administrator'>)})
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (C {<gettext>} 
                          {
                            (DQ 
                              <
'[ -c filepath ]  specifies the krb5.conf path used to configure this client'
                              >
                            )
                          }
                        )
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (C {<gettext>} 
                          {
                            (DQ 
                              <
'[ -d dnsarg ]  specifies which information should be looked up in DNS (dns_lookup_kdc, dns_lookup_realm, and dns_fallback)'
                              >
                            )
                          }
                        )
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (C {<gettext>} 
                          {
                            (DQ 
                              <
'[ -f fqdn_list ]  specifies which domains to configure host keys for this client'
                              >
                            )
                          }
                        )
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (C {<gettext>} 
                          {
                            (DQ 
                              <
'[ -h logicalhostname ]  configure the logical host name for a client that is in a cluster'
                              >
                            )
                          }
                        )
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (C {<gettext>} 
                          {
                            (DQ 
                              <
'[ -k kdc_list ]  specify multiple KDCs, if -m is not used the first KDC in the list is assumed to be the master.  KDC host names are used verbatim.'
                              >
                            )
                          }
                        )
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: (C {<gettext>} {(DQ <'[ -m master ]  master KDC server host name'>)})
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: (C {<gettext>} {(DQ <'[ -n ]  configure client to be an NFS client'>)})
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (C {<gettext>} 
                          {
                            (DQ 
                              <
'[ -p profile ]  specifies which profile file to use to configure this client'
                              >
                            )
                          }
                        )
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <t> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (C {<gettext>} 
                          {(DQ <'[ -s pam_list ]  update the service for Kerberos authentication'>)}
                        )
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (C {<error_message>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: discover_domain
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<dom>} {<DOMs>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName realm)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<set>} {<-A>} {<DOMs>} {<-->} 
                      {
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: (C {($ Id.VSub_DollarName KLOOKUP)} {<_ldap._tcp.dc._msdcs>} {<S>})
                          right: <Id.Backtick_Right '`'>
                        )
                      }
                    )
                  ]
                  spids: [5462 5473]
                )
              ]
              else_action: [
                (C {<set>} {<-A>} {<DOMs>} {<-->} 
                  {
                    (command_sub
                      left_token: <Id.Left_Backtick '`'>
                      child: 
                        (C {($ Id.VSub_DollarName KLOOKUP)} 
                          {<_ldap._tcp.dc._msdcs.> ($ Id.VSub_DollarName realm)} {<S>}
                        )
                      right: <Id.Backtick_Right '`'>
                    )
                  }
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_z
                      child: 
                        {
                          (braced_var_sub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name DOMs>
                            var_name: DOMs
                            bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                    )
                  redirects: []
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dom='> name:dom)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name DOMs>
                        var_name: DOMs
                        bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  spids: [5543]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dom='> name:dom)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name dom>
                        var_name: dom
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VOp1_Pound '#'>
                            arg_word: {<Id.Lit_Other '*'> <.>}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  spids: [5553]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dom='> name:dom)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name dom>
                        var_name: dom
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VOp1_Percent '%'>
                            arg_word: {<' '> <Id.Lit_Other '*'>}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  spids: [5562]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'domain='> name:domain)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName dom)}
                  spids: [5572]
                )
              ]
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: check_nss_hosts_or_ipnodes_config
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<backend>})
            (command.ForEach
              iter_names: [backend]
              iterable: (for_iter.Words words:[{($ Id.VSub_Number 1)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {($ Id.VSub_DollarName backend)}
                              right: {<dns>}
                            )
                          redirects: []
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                    )
                  ]
                )
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: check_nss_conf
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<i>} {<j>} {<hosts_config>})
            (command.ForEach
              iter_names: [i]
              iterable: (for_iter.Words words:[{<hosts>} {<ipnodes>}])
              body: 
                (command.DoGroup
                  children: [
                    (command.Pipeline
                      children: [
                        (C {<grep>} {(DQ <'^'> (${ Id.VSub_Name i) <':'>)} {<'/etc/nsswitch.conf'>})
                        (C {<read>} {<j>} {<hosts_config>})
                      ]
                      negated: F
                      stderr_indices: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<check_nss_hosts_or_ipnodes_config>} 
                          {(DQ ($ Id.VSub_DollarName hosts_config))}
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                    )
                  ]
                )
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: canon_resolve
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<name>} {<ip>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'name='> name:name)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {($ Id.VSub_DollarName KLOOKUP)} {($ Id.VSub_Number 1)} {<C>})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [5725]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_DollarName name)})
                  redirects: []
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'name='> name:name)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: (C {($ Id.VSub_DollarName KLOOKUP)} {($ Id.VSub_Number 1)} {<A>})
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                      spids: [5747]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_DollarName name)})
                  redirects: []
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ip='> name:ip)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {($ Id.VSub_DollarName KLOOKUP)} {($ Id.VSub_DollarName name)} {<I>})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [5773]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_DollarName ip)})
                  redirects: []
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.ForEach
              iter_names: [i]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName ip)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      words: [{<ping>} {($ Id.VSub_DollarName i)} {<2>}]
                                      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>}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                          spids: [5810 5826]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
                              op: assign_op.Equal
                              rhs: (rhs_word.Empty)
                              spids: [5835]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cname='> name:cname)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {($ Id.VSub_DollarName KLOOKUP)} {($ Id.VSub_DollarName ip)} {<P>})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [5845]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_DollarName cname)})
                  redirects: []
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (C {<print>} {<-->} {(DQ ($ Id.VSub_DollarName cname))})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: rev_resolve
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<name>} {<ip>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ip='> name:ip)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {($ Id.VSub_DollarName KLOOKUP)} {($ Id.VSub_Number 1)} {<I>})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [5897]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_DollarName ip)})
                  redirects: []
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'name='> name:name)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {($ Id.VSub_DollarName KLOOKUP)} {($ Id.VSub_DollarName ip)} {<P>})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [5923]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_DollarName name)})
                  redirects: []
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (C {<print>} {<-->} {($ Id.VSub_DollarName name)})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: dn2dns
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<OIFS>} {<dname>} {<dn>} {<comp>} {<components>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dn='> name:dn)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [5982]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dname='> name:dname)
                  op: assign_op.Equal
                  rhs: (rhs_word.Empty)
                  spids: [5986]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OIFS='> name:OIFS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName IFS))}
                  spids: [5990]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_Comma ','>}
                  spids: [5996]
                )
              ]
              redirects: []
            )
            (C {<set>} {<-A>} {<components>} {<-->} {($ Id.VSub_Number 1)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName OIFS))}
                  spids: [6011]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [comp]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (DQ 
                        (braced_var_sub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name components>
                          var_name: components
                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {(DQ ($ Id.VSub_DollarName comp))}
                              right: 
                                {<Id.Lit_Other '['> <dD> <Id.Lit_Other ']'> <Id.Lit_Other '['> <cC> 
                                  <Id.Lit_Other ']'> <Id.BoolBinary_GlobEqual '='> <Id.Lit_Other '*'>
                                }
                            )
                          redirects: []
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dname='> name:dname)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName dname) <.> 
                                (braced_var_sub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name comp>
                                  var_name: comp
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VOp1_Pound '#'>
                                      arg_word: {<Id.Lit_Other '?'> <Id.Lit_Other '?'> <'='>}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                          spids: [6061]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (C {<print>} 
              {
                (braced_var_sub
                  left: <Id.Left_DollarBrace '${'>
                  token: <Id.VSub_Name dname>
                  var_name: dname
                  suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<.>})
                  right: <Id.Right_DollarBrace '}'>
                )
              }
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: getBaseDN
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.DBracket
                          expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{(DQ ($ Id.VSub_Number 2))})
                          redirects: []
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'baseDN='> name:baseDN)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'CN='> ($ Id.VSub_Number 1) <','> 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: (C {<dns2dn>} {($ Id.VSub_Number 2)})
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          spids: [6116]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [6100 6113]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'baseDN='> name:baseDN)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<dns2dn>} {($ Id.VSub_Number 2)})
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      spids: [6132]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: dns2dn
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<OIFS>} {<dn>} {<labels>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OIFS='> name:OIFS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName IFS))}
                  spids: [6167]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                  op: assign_op.Equal
                  rhs: {<.>}
                  spids: [6173]
                )
              ]
              redirects: []
            )
            (C {<set>} {<-A>} {<labels>} {<-->} {($ Id.VSub_Number 1)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName OIFS))}
                  spids: [6188]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dn='> name:dn)
                  op: assign_op.Equal
                  rhs: (rhs_word.Empty)
                  spids: [6195]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [label]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (DQ 
                        (braced_var_sub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name labels>
                          var_name: labels
                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dn='> name:dn)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name dn) <',DC='> ($ Id.VSub_DollarName label))}
                          spids: [6217]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (C {<print>} {<-->} 
              {
                (DQ 
                  (braced_var_sub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name dn>
                    var_name: dn
                    suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<','>})
                    right: <Id.Right_DollarBrace '}'>
                  )
                )
              }
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: getSRVs
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<srv>} {<port>})
            (command.Pipeline
              children: [
                (C {($ Id.VSub_DollarName KLOOKUP)} {($ Id.VSub_Number 1)} {<S>})
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: (condition.Shell commands:[(C {<read>} {<srv>} {<port>})])
                  body: 
                    (command.DoGroup
                      children: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.Simple
                                          words: [{<ping>} {($ Id.VSub_DollarName srv)} {<2>}]
                                          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>}
                                            )
                                          ]
                                          more_env: []
                                          do_fork: T
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (C {<print>} {<-->} {($ Id.VSub_DollarName srv)} 
                                  {($ Id.VSub_DollarName port)}
                                )
                              ]
                              spids: [6281 6297]
                            )
                          ]
                          else_action: []
                          redirects: []
                        )
                      ]
                    )
                  redirects: []
                )
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: getKDC
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<j>})
            (C {<set>} {<-A>} {<KPWs>} {<-->} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<getSRVs>} {<_kpasswd._tcp.> ($ Id.VSub_DollarName dom) <.>})
                  right: <Id.Eof_RParen _>
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'kpasswd='> name:kpasswd)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name KPWs>
                        var_name: KPWs
                        bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  spids: [6347]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: {($ Id.VSub_DollarName siteName)}
                            )
                          redirects: []
                        )
                      ]
                    )
                  action: [
                    (C {<set>} {<-A>} {<KDCs>} {<-->} 
                      {
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (C {<getSRVs>} 
                              {<_kerberos._tcp.> ($ Id.VSub_DollarName siteName) <._sites.> 
                                ($ Id.VSub_DollarName dom) <.>
                              }
                            )
                          right: <Id.Eof_RParen _>
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'kdc='> name:kdc)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name KDCs>
                                var_name: KDCs
                                bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [6390]
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: {($ Id.VSub_DollarName kdc)}
                            )
                          redirects: []
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                        )
                      ]
                    )
                  ]
                  spids: [6357 6368]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<set>} {<-A>} {<KDCs>} {<-->} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<getSRVs>} {<_kerberos._tcp.> ($ Id.VSub_DollarName dom) <.>})
                  right: <Id.Eof_RParen _>
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'kdc='> name:kdc)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name KDCs>
                        var_name: KDCs
                        bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  spids: [6437]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{($ Id.VSub_DollarName kdc)})
                  redirects: []
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (C {<set>} {<-A>} {<KDCs>} {<-->} {($ Id.VSub_DollarName DomainDnsZones)} {<88>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'kdc='> name:kdc)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName ForestDnsZones)}
                  spids: [6477]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: getDC
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<j>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: {($ Id.VSub_DollarName siteName)}
                            )
                          redirects: []
                        )
                      ]
                    )
                  action: [
                    (C {<set>} {<-A>} {<DCs>} {<-->} 
                      {
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (C {<getSRVs>} 
                              {<_ldap._tcp.> ($ Id.VSub_DollarName siteName) <._sites.dc._msdcs.> 
                                ($ Id.VSub_DollarName dom) <.>
                              }
                            )
                          right: <Id.Eof_RParen _>
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dc='> name:dc)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name DCs>
                                var_name: DCs
                                bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [6529]
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: {($ Id.VSub_DollarName dc)}
                            )
                          redirects: []
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                        )
                      ]
                    )
                  ]
                  spids: [6496 6507]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<set>} {<-A>} {<DCs>} {<-->} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<getSRVs>} {<_ldap._tcp.dc._msdcs.> ($ Id.VSub_DollarName dom) <.>})
                  right: <Id.Eof_RParen _>
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dc='> name:dc)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name DCs>
                        var_name: DCs
                        bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  spids: [6576]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{($ Id.VSub_DollarName dc)})
                  redirects: []
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (C {<set>} {<-A>} {<DCs>} {<-->} {($ Id.VSub_DollarName DomainDnsZones)} {<389>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dc='> name:dc)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName DomainDnsZones)}
                  spids: [6616]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: write_ads_krb5conf
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<kdcs>})
            (C {<printf>} 
              {
                (DQ <Id.Lit_BadBackslash '\\'> <n> 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<gettext>} {(DQ <'Setting up %s'>)})
                    right: <Id.Eof_RParen _>
                  ) <.> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                )
              } {($ Id.VSub_DollarName KRB5_CONFIG_FILE)}
            )
            (command.ForEach
              iter_names: [i]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name KDCs>
                        var_name: KDCs
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {($ Id.VSub_DollarName i)}
                              right: 
                                {(word_part.ExtGlob op:<Id.ExtGlob_Plus '+('> arms:[{<'[0-9]'>}])}
                            )
                          redirects: []
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_n
                                      child: {($ Id.VSub_DollarName kdcs)}
                                    )
                                  redirects: []
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'kdcs='> name:kdcs)
                                  op: assign_op.Equal
                                  rhs: 
                                    {(DQ ($ Id.VSub_DollarName kdcs) <','> ($ Id.VSub_DollarName i))}
                                  spids: [6706]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [6692 6703]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'kdcs='> name:kdcs)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName i)}
                              spids: [6717]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (C {($ Id.VSub_DollarName KCONF)} {<-f>} {($ Id.VSub_DollarName KRB5_CONFIG)} {<-r>} 
              {($ Id.VSub_DollarName realm)} {<-k>} {($ Id.VSub_DollarName kdcs)} {<-m>} {($ Id.VSub_DollarName KDC)} {<-p>} {<SET_CHANGE>} {<-d>} 
              {<.> ($ Id.VSub_DollarName dom)}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_ne
                                  left: {($ Id.VSub_QMark '?')}
                                  right: {<0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <n> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <'Can not update %s, exiting'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                        {($ Id.VSub_DollarName KRB5_CONFIG)}
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [6757 6770]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: getForestName
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (C {<ldapsearch>} {<-R>} {<-T>} {<-h>} {($ Id.VSub_DollarName dc)} 
                  {($ Id.VSub_DollarName ldap_args)} {<-b>} {(DQ )} {<-s>} {<base>} {(DQ )} {<schemaNamingContext>}
                )
                (C {<grep>} {<Id.Lit_Other '^'> <schemaNamingContext>})
                (C {<read>} {<j>} {<schemaNamingContext>})
              ]
              negated: F
              stderr_indices: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_ne
                                  left: {($ Id.VSub_QMark '?')}
                                  right: {<0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <'Can\'t find forest'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [6855 6868]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'schemaNamingContext='>
                      name: schemaNamingContext
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name schemaNamingContext>
                        var_name: schemaNamingContext
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VOp1_Pound '#'>
                            arg_word: {<'CN=Schema,CN=Configuration,'>}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  spids: [6896]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_z
                      child: {($ Id.VSub_DollarName schemaNamingContext)}
                    )
                  redirects: []
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'forest='> name:forest)
                  op: assign_op.Equal
                  rhs: (rhs_word.Empty)
                  spids: [6921]
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_n
                          child: {($ Id.VSub_DollarName schemaNamingContext)}
                        )
                      redirects: []
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'schemaNamingContext='>
                              name: schemaNamingContext
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name schemaNamingContext>
                                var_name: schemaNamingContext
                                suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<'DC='>})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [6938]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'forest='> name:forest)
                          op: assign_op.Equal
                          rhs: 
                            {(${ Id.VSub_Name forest) <.> 
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name schemaNamingContext>
                                var_name: schemaNamingContext
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VOp1_DPercent '%%'>
                                    arg_word: {<','> <Id.Lit_Other '*'>}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [6946]
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobEqual
                              left: {(DQ ($ Id.VSub_DollarName schemaNamingContext))}
                              right: {<Id.Lit_Other '*'> <Id.Lit_Other ','> <Id.Lit_Other '*'>}
                            )
                          redirects: []
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Break break>
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'schemaNamingContext='>
                              name: schemaNamingContext
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name schemaNamingContext>
                                var_name: schemaNamingContext
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VOp1_Pound '#'>
                                    arg_word: {<Id.Lit_Other '*'> <','>}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [6978]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'forest='> name:forest)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name forest>
                        var_name: forest
                        suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<.>})
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  spids: [6990]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: getGC
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<j>})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{($ Id.VSub_DollarName gc)})
                  redirects: []
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: {($ Id.VSub_DollarName siteName)}
                            )
                          redirects: []
                        )
                      ]
                    )
                  action: [
                    (C {<set>} {<-A>} {<GCs>} {<-->} 
                      {
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (C {<getSRVs>} 
                              {<_ldap._tcp.> ($ Id.VSub_DollarName siteName) <._sites.gc._msdcs.> 
                                ($ Id.VSub_DollarName forest) <.>
                              }
                            )
                          right: <Id.Eof_RParen _>
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gc='> name:gc)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name GCs>
                                var_name: GCs
                                bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [7062]
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: {($ Id.VSub_DollarName gc)}
                            )
                          redirects: []
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                        )
                      ]
                    )
                  ]
                  spids: [7029 7040]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<set>} {<-A>} {<GCs>} {<-->} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<getSRVs>} {<_ldap._tcp.gc._msdcs.> ($ Id.VSub_DollarName forest) <.>})
                  right: <Id.Eof_RParen _>
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gc='> name:gc)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name GCs>
                        var_name: GCs
                        bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  spids: [7109]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{($ Id.VSub_DollarName gc)})
                  redirects: []
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (C {<set>} {<-A>} {<GCs>} {<-->} {($ Id.VSub_DollarName ForestDnsZones)} {<3268>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gc='> name:gc)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName ForestDnsZones)}
                  spids: [7149]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: ipAddr2num
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<OIFS>})
            (C {<typeset>} {<-ui16>} {<num>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobNEqual
                              left: {(DQ ($ Id.VSub_Number 1))}
                              right: 
                                {(word_part.ExtGlob op:<Id.ExtGlob_Plus '+('> arms:[{<'[0-9]'>}]) <.> 
                                  (word_part.ExtGlob
                                    op: <Id.ExtGlob_Plus '+('>
                                    arms: [{<'[0-9]'>}]
                                  ) <.> (word_part.ExtGlob op:<Id.ExtGlob_Plus '+('> arms:[{<'[0-9]'>}]) <.> 
                                  (word_part.ExtGlob
                                    op: <Id.ExtGlob_Plus '+('>
                                    arms: [{<'[0-9]'>}]
                                  )
                                }
                            )
                          redirects: []
                        )
                      ]
                    )
                  action: [
                    (C {<print>} {<0>})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [7190 7219]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OIFS='> name:OIFS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName IFS))}
                  spids: [7236]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                  op: assign_op.Equal
                  rhs: {<.>}
                  spids: [7242]
                )
              ]
              redirects: []
            )
            (C {<set>} {<-->} {($ Id.VSub_Number 1)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName OIFS))}
                  spids: [7253]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'num='> name:num)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Pipe
                            left: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Pipe
                                left: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Pipe
                                    left: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_DLess
                                        left: {(${ Id.VSub_Number 1)}
                                        right: {<Id.Lit_Digits 24>}
                                      )
                                    right: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_DLess
                                        left: {(${ Id.VSub_Number 2)}
                                        right: {<Id.Lit_Digits 16>}
                                      )
                                  )
                                right: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_DLess
                                    left: {(${ Id.VSub_Number 3)}
                                    right: {<Id.Lit_Digits 8>}
                                  )
                              )
                            right: {(${ Id.VSub_Number 4)}
                          )
                      )
                    }
                  spids: [7260]
                )
              ]
              redirects: []
            )
            (C {<print>} {<-->} {($ Id.VSub_DollarName num)})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: num2ipAddr
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<-ui16>} {<num>})
            (C {<typeset>} {<-ui10>} {<a>} {<b>} {<c>} {<d>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'num='> name:num)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [7346]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_DGreat
                            left: ($ Id.Lit_ArithVarLike num)
                            right: {<Id.Lit_Digits 24>}
                          )
                      )
                    }
                  spids: [7350]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b='> name:b)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Amp
                            left: 
                              (arith_expr.Binary
                                op_id: Id.Arith_DGreat
                                left: ($ Id.Lit_ArithVarLike num)
                                right: {<Id.Lit_Digits 16>}
                              )
                            right: {<Id.Lit_Digits 16> <Id.Lit_Pound '#'> <Id.Lit_ArithVarLike ff>}
                          )
                      )
                    }
                  spids: [7360]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'c='> name:c)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Amp
                            left: 
                              (arith_expr.Binary
                                op_id: Id.Arith_DGreat
                                left: ($ Id.Lit_ArithVarLike num)
                                right: {<Id.Lit_Digits 8>}
                              )
                            right: {<Id.Lit_Digits 16> <Id.Lit_Pound '#'> <Id.Lit_ArithVarLike ff>}
                          )
                      )
                    }
                  spids: [7375]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'd='> name:d)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Amp
                            left: ($ Id.Lit_ArithVarLike num)
                            right: {<Id.Lit_Digits 16> <Id.Lit_Pound '#'> <Id.Lit_ArithVarLike ff>}
                          )
                      )
                    }
                  spids: [7390]
                )
              ]
              redirects: []
            )
            (C {<print>} {<-->} 
              {($ Id.VSub_DollarName a) <.> ($ Id.VSub_DollarName b) <.> ($ Id.VSub_DollarName c) <.> 
                ($ Id.VSub_DollarName d)
              }
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: netmask2length
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<-ui16>} {<netmask>})
            (C {<typeset>} {<-i>} {<len>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'netmask='> name:netmask)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [7455]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'len='> name:len)
                  op: assign_op.Equal
                  rhs: {<32>}
                  spids: [7459]
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_eq
                          left: 
                            {
                              (word_part.ArithSub
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Percent
                                    left: ($ Id.Lit_ArithVarLike netmask)
                                    right: {<Id.Lit_Digits 2>}
                                  )
                              )
                            }
                          right: {<0>}
                        )
                      redirects: []
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'netmask='> name:netmask)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_DGreat
                                    left: ($ Id.Lit_ArithVarLike netmask)
                                    right: {<Id.Lit_Digits 1>}
                                  )
                              )
                            }
                          spids: [7486]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'len='> name:len)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Minus
                                    left: ($ Id.Lit_ArithVarLike len)
                                    right: {<Id.Lit_Digits 1>}
                                  )
                              )
                            }
                          spids: [7495]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (C {<print>} {($ Id.VSub_DollarName len)})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: getSubnets
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<-ui16>} {<addr>} {<netmask>})
            (C {<typeset>} {<-ui16>} 
              {<Id.Lit_VarLike 'classa='> <16> 
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\#'> ch:'#') <ff000000>
              }
            )
            (C {<typeset>} {<-ui16>} 
              {<Id.Lit_VarLike 'classb='> <16> 
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\#'> ch:'#') <ffff0000>
              }
            )
            (C {<typeset>} {<-ui16>} 
              {<Id.Lit_VarLike 'classc='> <16> 
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\#'> ch:'#') <ffffff00>
              }
            )
            (command.Pipeline
              children: [
                (C {<ifconfig>} {<-a>})
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: (condition.Shell commands:[(C {<read>} {<line>})])
                  body: 
                    (command.DoGroup
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'addr='> name:addr)
                              op: assign_op.Equal
                              rhs: {<0>}
                              spids: [7592]
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'netmask='> name:netmask)
                              op: assign_op.Equal
                              rhs: {<0>}
                              spids: [7596]
                            )
                          ]
                          redirects: []
                        )
                        (C {<set>} {<-->} {($ Id.VSub_DollarName line)})
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_Number 1)}
                                  right: {<inet>}
                                )
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                        )
                        (command.WhileUntil
                          keyword: <Id.KW_While while>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_gt
                                      left: {($ Id.VSub_Pound '#')}
                                      right: {<0>}
                                    )
                                  redirects: []
                                )
                              ]
                            )
                          body: 
                            (command.DoGroup
                              children: [
                                (command.Case
                                  to_match: {(DQ ($ Id.VSub_Number 1))}
                                  arms: [
                                    (case_arm
                                      pat_list: [{<inet>}]
                                      action: [
                                        (command.Sentence
                                          child: 
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'addr='>
                                                      name: addr
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_DollarParen '$('>
                                                        child: 
                                                          (C {<ipAddr2num>} {($ Id.VSub_Number 2)})
                                                        right: <Id.Eof_RParen _>
                                                      )
                                                    }
                                                  spids: [7650]
                                                )
                                              ]
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                        (C {<shift>})
                                      ]
                                      spids: [7647 7648 7659 -1]
                                    )
                                    (case_arm
                                      pat_list: [{<netmask>}]
                                      action: [
                                        (command.Sentence
                                          child: 
                                            (C {<eval>} 
                                              {<Id.Lit_VarLike 'netmask='> <16> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\#'>
                                                  ch: '#'
                                                ) ($ Id.VSub_Number 2)
                                              }
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                        (C {<shift>})
                                      ]
                                      spids: [7662 7663 7674 -1]
                                    )
                                    (case_arm
                                      pat_list: [{<Id.Lit_Star '*'>}]
                                      action: [
                                        (command.Sentence
                                          child: (C {<Id.Lit_Colon ':'>})
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                      spids: [7677 7678 -1 7684]
                                    )
                                  ]
                                  redirects: []
                                )
                                (C {<shift>})
                              ]
                            )
                          redirects: []
                        )
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (command.DBracket
                              expr: 
                                (bool_expr.LogicalOr
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_eq
                                      left: {($ Id.VSub_DollarName addr)}
                                      right: {<0>}
                                    )
                                  right: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_eq
                                      left: {($ Id.VSub_DollarName netmask)}
                                      right: {<0>}
                                    )
                                )
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                        )
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_eq
                                  left: 
                                    {
                                      (word_part.ArithSub
                                        anode: 
                                          (arith_expr.Binary
                                            op_id: Id.Arith_Amp
                                            left: ($ Id.Lit_ArithVarLike addr)
                                            right: ($ Id.Lit_ArithVarLike classa)
                                          )
                                      )
                                    }
                                  right: 
                                    {<16> 
                                      (word_part.EscapedLiteral
                                        token: <Id.Lit_EscapedChar '\\#'>
                                        ch: '#'
                                      ) <7f000000>
                                    }
                                )
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                        )
                        (C {<print>} 
                          {
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (C {<num2ipAddr>} 
                                  {
                                    (word_part.ArithSub
                                      anode: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_Amp
                                          left: ($ Id.Lit_ArithVarLike addr)
                                          right: ($ Id.Lit_ArithVarLike netmask)
                                        )
                                    )
                                  }
                                )
                              right: <Id.Eof_RParen _>
                            ) <'/'> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<netmask2length>} {($ Id.VSub_DollarName netmask)})
                              right: <Id.Eof_RParen _>
                            )
                          }
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName netmask)} {<-gt>} 
                                      {($ Id.VSub_DollarName classc)} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<print>} 
                                  {
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (C {<num2ipAddr>} 
                                          {
                                            (word_part.ArithSub
                                              anode: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Amp
                                                  left: ($ Id.Lit_ArithVarLike addr)
                                                  right: ($ Id.Lit_ArithVarLike classc)
                                                )
                                            )
                                          }
                                        )
                                      right: <Id.Eof_RParen _>
                                    ) <'/'> 
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: (C {<netmask2length>} {($ Id.VSub_DollarName classc)})
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                )
                              ]
                              spids: [7764 7777]
                            )
                          ]
                          else_action: []
                          redirects: []
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName netmask)} {<-gt>} 
                                      {($ Id.VSub_DollarName classb)} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<print>} 
                                  {
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (C {<num2ipAddr>} 
                                          {
                                            (word_part.ArithSub
                                              anode: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Amp
                                                  left: ($ Id.Lit_ArithVarLike addr)
                                                  right: ($ Id.Lit_ArithVarLike classb)
                                                )
                                            )
                                          }
                                        )
                                      right: <Id.Eof_RParen _>
                                    ) <'/'> 
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: (C {<netmask2length>} {($ Id.VSub_DollarName classb)})
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                )
                              ]
                              spids: [7805 7818]
                            )
                          ]
                          else_action: []
                          redirects: []
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName netmask)} {<-gt>} 
                                      {($ Id.VSub_DollarName classa)} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<print>} 
                                  {
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (C {<num2ipAddr>} 
                                          {
                                            (word_part.ArithSub
                                              anode: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Amp
                                                  left: ($ Id.Lit_ArithVarLike addr)
                                                  right: ($ Id.Lit_ArithVarLike classa)
                                                )
                                            )
                                          }
                                        )
                                      right: <Id.Eof_RParen _>
                                    ) <'/'> 
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: (C {<netmask2length>} {($ Id.VSub_DollarName classa)})
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                )
                              ]
                              spids: [7846 7859]
                            )
                          ]
                          else_action: []
                          redirects: []
                        )
                      ]
                    )
                  redirects: []
                )
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: getSite
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<subnet>} {<siteDN>} {<j>} {<ldapsrv>} {<subnet_dom>})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<eval>} 
                  {
                    (DQ <'[[ -n '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\$'>
                        ch: '$'
                      ) <siteName> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' ]]'>
                    )
                  }
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.ForEach
              iter_names: [subnet]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<getSubnets>})
                        right: <Id.Eof_RParen _>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Pipeline
                      children: [
                        (C {<ldapsearch>} {<-R>} {<-T>} {<-h>} {($ Id.VSub_DollarName dc)} 
                          {($ Id.VSub_DollarName ldap_args)} {<-p>} {<3268>} {<-b>} {(DQ )} {<-s>} {<sub>} {<Id.Lit_VarLike 'cn='> ($ Id.VSub_DollarName subnet)} {<dn>}
                        )
                        (C {<grep>} {<Id.Lit_Other '^'> <dn>})
                        (C {<read>} {<j>} {<subnetDN>})
                      ]
                      negated: F
                      stderr_indices: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: {($ Id.VSub_DollarName subnetDN)}
                            )
                          redirects: []
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'subnet_dom='> name:subnet_dom)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: (C {<dn2dns>} {($ Id.VSub_DollarName subnetDN)})
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [8002]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ldapsrv='> name:ldapsrv)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<canon_resolve>} 
                                    {<DomainDnsZones.> ($ Id.VSub_DollarName subnet_dom)}
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [8010]
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: {($ Id.VSub_DollarName ldapsrv)}
                            )
                          redirects: []
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (command.Pipeline
                      children: [
                        (C {<ldapsearch>} {<-R>} {<-T>} {<-h>} {($ Id.VSub_DollarName ldapsrv)} 
                          {($ Id.VSub_DollarName ldap_args)} {<-b>} {(DQ ($ Id.VSub_DollarName subnetDN))} {<-s>} {<base>} {(DQ )} {<siteObject>}
                        )
                        (C {<grep>} {<Id.Lit_Other '^'> <siteObject>})
                        (C {<read>} {<j>} {<siteDN>})
                      ]
                      negated: F
                      stderr_indices: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: {($ Id.VSub_DollarName siteDN)}
                            )
                          redirects: []
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Continue continue>
                        )
                      ]
                    )
                    (C {<eval>} 
                      {<Id.Lit_VarLike 'siteName='> 
                        (braced_var_sub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name siteDN>
                          var_name: siteDN
                          suffix_op: 
                            (suffix_op.Unary
                              op: <Id.VOp1_DPercent '%%'>
                              arg_word: {<','> <Id.Lit_Other '*'>}
                            )
                          right: <Id.Right_DollarBrace '}'>
                        )
                      }
                    )
                    (C {<eval>} 
                      {<Id.Lit_VarLike 'siteName='> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                          ch: '$'
                        ) <Id.Lit_LBrace '{'> <siteName> <Id.Lit_Pound '#'> <Id.Lit_VarLike 'CN='> <Id.Lit_RBrace '}'>
                      }
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Return return>)
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: doKRB5config
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_f
                      child: {($ Id.VSub_DollarName KRB5_CONFIG_FILE)}
                    )
                  redirects: []
                )
                (C {<cp>} {($ Id.VSub_DollarName KRB5_CONFIG_FILE)} 
                  {(${ Id.VSub_Name KRB5_CONFIG_FILE) <-pre-kclient>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_f
                      child: {($ Id.VSub_DollarName KRB5_KEYTAB_FILE)}
                    )
                  redirects: []
                )
                (C {<cp>} {($ Id.VSub_DollarName KRB5_KEYTAB_FILE)} 
                  {(${ Id.VSub_Name KRB5_KEYTAB_FILE) <-pre-kclient>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_s
                      child: {($ Id.VSub_DollarName KRB5_CONFIG)}
                    )
                  redirects: []
                )
                (C {<cp>} {($ Id.VSub_DollarName KRB5_CONFIG)} {($ Id.VSub_DollarName KRB5_CONFIG_FILE)})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_s
                      child: {($ Id.VSub_DollarName KRB5_CONFIG_FILE)}
                    )
                  redirects: []
                )
                (C {<chmod>} {<0644>} {($ Id.VSub_DollarName KRB5_CONFIG_FILE)})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_s
                      child: {($ Id.VSub_DollarName new_keytab)}
                    )
                  redirects: []
                )
                (C {<cp>} {($ Id.VSub_DollarName new_keytab)} {($ Id.VSub_DollarName KRB5_KEYTAB_FILE)})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_s
                      child: {($ Id.VSub_DollarName KRB5_KEYTAB_FILE)}
                    )
                  redirects: []
                )
                (C {<chmod>} {<0600>} {($ Id.VSub_DollarName KRB5_KEYTAB_FILE)})
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: addDNSRR
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'smbFMRI='> name:smbFMRI)
                  op: assign_op.Equal
                  rhs: {<svc> <Id.Lit_Colon ':'> <'/network/smb/server'> <Id.Lit_Colon ':'> <default>}
                  spids: [8251]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ddnsProp='> name:ddnsProp)
                  op: assign_op.Equal
                  rhs: {<'smbd/ddns_enable'>}
                  spids: [8259]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'enProp='> name:enProp)
                  op: assign_op.Equal
                  rhs: {<'general/enabled'>}
                  spids: [8263]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'enabled='> name:enabled)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<svcprop>} {<-p>} {($ Id.VSub_DollarName enProp)} 
                            {($ Id.VSub_DollarName smbFMRI)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [8268]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ddns_enable='> name:ddns_enable)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<svcprop>} {<-p>} {($ Id.VSub_DollarName ddnsProp)} 
                            {($ Id.VSub_DollarName smbFMRI)}
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [8282]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {($ Id.VSub_DollarName enabled)}
                                      right: {<true>}
                                    )
                                  right: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobNEqual
                                      left: {($ Id.VSub_DollarName ddns_enable)}
                                      right: {<true>}
                                    )
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} {(DQ <'Warning: won\'t create DNS records for client'>)})
                            right: <Id.Eof_RParen _>
                          ) <.> <Id.Lit_BadBackslash '\\'> <n>
                        )
                      }
                    )
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} {(DQ <'%s property not set to \'true\' for the %s FMRI'>)})
                            right: <Id.Eof_RParen _>
                          ) <.> <Id.Lit_BadBackslash '\\'> <n>
                        )
                      } {($ Id.VSub_DollarName ddnsProp)} {($ Id.VSub_DollarName smbFMRI)}
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Return return>)
                  ]
                  spids: [8297 8318]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [{<kdestroy>}]
              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>})
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [{($ Id.VSub_DollarName KDYNDNS)} {<-d>} {($ Id.VSub_Number 1)}]
              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>})
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_ne
                                  left: {($ Id.VSub_QMark '?')}
                                  right: {<0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} {(DQ <'Warning: unable to create DNS records for client'>)})
                            right: <Id.Eof_RParen _>
                          ) <.> <Id.Lit_BadBackslash '\\'> <n>
                        )
                      }
                    )
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} 
                                {
                                  (DQ 
                                    <
'This could mean that \'%s\' is not included as a \'nameserver\' in the /etc/resolv.conf file or some other type of error'
                                    >
                                  )
                                }
                              )
                            right: <Id.Eof_RParen _>
                          ) <.> <Id.Lit_BadBackslash '\\'> <n>
                        )
                      } {($ Id.VSub_DollarName dc)}
                    )
                  ]
                  spids: [8398 8411]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: setSMB
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<Id.Lit_VarLike 'domain='> ($ Id.VSub_Number 1)})
            (C {<typeset>} {<Id.Lit_VarLike 'server='> ($ Id.VSub_Number 2)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'smbFMRI='> name:smbFMRI)
                  op: assign_op.Equal
                  rhs: {<svc> <Id.Lit_Colon ':'> <'/network/smb/server'>}
                  spids: [8488]
                )
              ]
              redirects: []
            )
            (command.Pipeline
              children: [
                (C {<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_DollarName newpw))})
                (C {($ Id.VSub_DollarName KSMB)} {<-d>} {($ Id.VSub_DollarName domain)} {<-s>} 
                  {($ Id.VSub_DollarName server)}
                )
              ]
              negated: F
              stderr_indices: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_ne
                                  left: {($ Id.VSub_QMark '?')}
                                  right: {<0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} 
                                {
                                  (DQ 
                                    <
'Warning: unable to set %s domain, server and password information'
                                    >
                                  )
                                }
                              )
                            right: <Id.Eof_RParen _>
                          ) <.> <Id.Lit_BadBackslash '\\'> <n>
                        )
                      } {($ Id.VSub_DollarName smbFMRI)}
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Return return>)
                  ]
                  spids: [8518 8531]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [{<svcadm>} {<restart>} {($ Id.VSub_DollarName smbFMRI)}]
              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>})
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_ne
                                  left: {($ Id.VSub_QMark '?')}
                                  right: {<0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<gettext>} {(DQ <'Warning: unable to restart %s'>)})
                            right: <Id.Eof_RParen _>
                          ) <.> <Id.Lit_BadBackslash '\\'> <n>
                        )
                      } {($ Id.VSub_DollarName smbFMRI)}
                    )
                  ]
                  spids: [8573 8586]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: compareDomains
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<oldDom>} {<hspn>} {<Id.Lit_VarLike 'newDom='> ($ Id.VSub_Number 1)})
            (command.Pipeline
              children: [
                (command.Simple
                  words: [{<klist>} {<-k>}]
                  redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})]
                  more_env: []
                  do_fork: T
                )
                (C {<grep>} {<Id.Lit_At '@'>})
                (C {<read>} {<j>} {<hspn>})
              ]
              negated: F
              stderr_indices: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_DollarName hspn)})
                  redirects: []
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'oldDom='> name:oldDom)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name hspn>
                        var_name: hspn
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VOp1_Pound '#'>
                            arg_word: {<Id.Lit_Other '*'> <Id.Lit_Other '@'>}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  spids: [8678]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobNEqual
                                  left: {($ Id.VSub_DollarName oldDom)}
                                  right: {($ Id.VSub_DollarName newDom)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} 
                                {(DQ <'The client is currently configured in a different domain'>)}
                              )
                            right: <Id.Eof_RParen _>
                          ) <.> <Id.Lit_BadBackslash '\\'> <n>
                        )
                      }
                    )
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} 
                                {
                                  (DQ 
                                    <
'Currently in the \'%s\' domain, trying to join the \'%s\' domain'
                                    >
                                  )
                                }
                              )
                            right: <Id.Eof_RParen _>
                          ) <.> <Id.Lit_BadBackslash '\\'> <n>
                        )
                      } {($ Id.VSub_DollarName oldDom)} {($ Id.VSub_DollarName newDom)}
                    )
                    (C {<query>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} {(DQ <'Do you want the client to join a new domain'>)})
                            right: <Id.Eof_RParen _>
                          ) <' ?'>
                        )
                      }
                    )
                    (C {<printf>} {(DQ <Id.Lit_BadBackslash '\\'> <n>)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobNEqual
                                          left: {($ Id.VSub_DollarName answer)}
                                          right: {<yes>}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<printf>}
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (C {<gettext>} 
                                          {(DQ <'Client will not be joined to the new domain'>)}
                                        )
                                      right: <Id.Eof_RParen _>
                                    ) <.> <Id.Lit_BadBackslash '\\'> <n>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (C {<error_message>})
                          ]
                          spids: [8761 8774]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [8687 8700]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: getKDCDC
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<getKDC>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: {($ Id.VSub_DollarName kdc)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KDC='> name:KDC)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName kdc)}
                          spids: [8832]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dc='> name:dc)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName kdc)}
                          spids: [8836]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [8818 8829]
                )
              ]
              else_action: [
                (C {<getDC>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_n
                                      child: {($ Id.VSub_DollarName dc)}
                                    )
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KDC='> name:KDC)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName dc)}
                              spids: [8860]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [8846 8857]
                    )
                  ]
                  else_action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (C {<gettext>} 
                                  {
                                    (DQ 
                                      <
'Could not find domain controller server for \'%s\'.  Exiting'
                                      >
                                    )
                                  }
                                )
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                        {($ Id.VSub_DollarName realm)}
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: gen_rand
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<-u>} {<hex>})
            (command.Pipeline
              children: [
                (command.Simple
                  words: [
                    {<dd>}
                    {<Id.Lit_VarLike 'if='> <'/dev/random'>}
                    {<Id.Lit_VarLike 'bs='> <1>}
                    {<Id.Lit_VarLike 'count='> <1>}
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
                (C {<od>} {<-A>} {<n>} {<-tx1>})
                (C {<read>} {<hex>})
              ]
              negated: F
              stderr_indices: []
            )
            (C {<printf>} {<Id.Lit_Other '%'> <s>} 
              {
                (word_part.ArithSub
                  anode: {<Id.Lit_Digits 16> <Id.Lit_Pound '#'> ($ Id.VSub_DollarName hex)}
                )
              }
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: join_domain
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<typeset>} {<-u>} {<upcase_nodename>})
            (C {<typeset>} {<-l>} {<locase_nodename>})
            (C {<typeset>} {<-L15>} {<string15>})
            (C {<typeset>} {<netbios_nodename>} {<fqdn>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'container='> name:container)
                  op: assign_op.Equal
                  rhs: {<Computers>}
                  spids: [8998]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ldap_args='> name:ldap_args)
                  op: assign_op.Equal
                  rhs: {(DQ <'-o authzid= -o mech=gssapi'>)}
                  spids: [9002]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'userAccountControlBASE='>
                      name: userAccountControlBASE
                    )
                  op: assign_op.Equal
                  rhs: {<4096>}
                  spids: [9008]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName ADMIN_PRINC)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cprinc='> name:cprinc)
                          op: assign_op.Equal
                          rhs: {<Administrator>}
                          spids: [9027]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [9013 9024]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cprinc='> name:cprinc)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName ADMIN_PRINC)}
                      spids: [9034]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [(C {<discover_domain>})]
                              negated: T
                              stderr_indices: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <'Can not find realm'>)})
                              right: <Id.Eof_RParen _>
                            ) <' \'%s\'.'> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                        {($ Id.VSub_DollarName realm)}
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [9042 9049]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dom='> name:dom)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName domain)}
                  spids: [9080]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'realm='> name:realm)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName domain)}
                  spids: [9084]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_gt
                                  left: 
                                    {
                                      (braced_var_sub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name hostname>
                                        var_name: hostname
                                        prefix_op: <Id.VSub_Pound '#'>
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                  right: {<15>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'string15='> name:string15)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName hostname)}
                          spids: [9108]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'upcase_nodename='>
                              name: upcase_nodename
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName string15)}
                          spids: [9112]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'locase_nodename='>
                              name: locase_nodename
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName string15)}
                          spids: [9116]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [9089 9105]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'upcase_nodename='>
                          name: upcase_nodename
                        )
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName hostname)}
                      spids: [9123]
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'locase_nodename='>
                          name: locase_nodename
                        )
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName hostname)}
                      spids: [9127]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'netbios_nodename='>
                      name: netbios_nodename
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ (${ Id.VSub_Name upcase_nodename) 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                          ch: '$'
                        )
                      )
                    }
                  spids: [9135]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fqdn='> name:fqdn)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName hostname) <.> ($ Id.VSub_DollarName domain)}
                  spids: [9144]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'upn='> name:upn)
                  op: assign_op.Equal
                  rhs: {<'host/'> (${ Id.VSub_Name fqdn) <Id.Lit_At '@'> (${ Id.VSub_Name realm)}
                  spids: [9150]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'object='> name:object)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<mktemp>} {<-q>} {<-t>} {<kclient-computer-object.XXXXXX>})
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [9162]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName object)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <n> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <'Can not create temporary file, exiting'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <'n\n'>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [9174 9185]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'modify_existing='>
                      name: modify_existing
                    )
                  op: assign_op.Equal
                  rhs: {<false>}
                  spids: [9216]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'recreate='> name:recreate)
                  op: assign_op.Equal
                  rhs: {<false>}
                  spids: [9220]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DomainDnsZones='> name:DomainDnsZones)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<rev_resolve>} {<DomainDnsZones.> ($ Id.VSub_DollarName dom) <.>})
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [9225]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ForestDnsZones='> name:ForestDnsZones)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<rev_resolve>} {<ForestDnsZones.> ($ Id.VSub_DollarName dom) <.>})
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [9235]
                )
              ]
              redirects: []
            )
            (C {<getBaseDN>} {(DQ ($ Id.VSub_DollarName container))} {(DQ ($ Id.VSub_DollarName dom))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: {($ Id.VSub_DollarName KDC)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dc='> name:dc)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName KDC)}
                          spids: [9272]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [9258 9269]
                )
              ]
              else_action: [(C {<getKDCDC>})]
              redirects: []
            )
            (C {<write_ads_krb5conf>})
            (C {<printf>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<gettext>} {(DQ <'Attempting to join \'%s\' to the \'%s\' domain'>)})
                    right: <Id.Eof_RParen _>
                  ) <.> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                )
              } {($ Id.VSub_DollarName upcase_nodename)} {($ Id.VSub_DollarName realm)}
            )
            (C {<kinit>} {($ Id.VSub_DollarName cprinc) <Id.Lit_At '@'> ($ Id.VSub_DollarName realm)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_ne
                                  left: {($ Id.VSub_QMark '?')}
                                  right: {<0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <'Could not authenticate %s.  Exiting'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                        {($ Id.VSub_DollarName cprinc) <Id.Lit_At '@'> ($ Id.VSub_DollarName realm)}
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [9320 9333]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: (condition.Shell commands:[(C {<getForestName>})])
                  action: [
                    (C {<printf>} 
                      {
                        (DQ <Id.Lit_BadBackslash '\\'> <n> 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<gettext>} {(DQ <'Forest name found: %s'>)})
                            right: <Id.Eof_RParen _>
                          ) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                        )
                      } {($ Id.VSub_DollarName forest)}
                    )
                  ]
                  spids: [9366 9371]
                )
              ]
              else_action: [
                (C {<printf>} 
                  {
                    (DQ <Id.Lit_BadBackslash '\\'> <n> 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<gettext>} 
                            {(DQ <'Forest name not found, assuming forest is the domain name'>)}
                          )
                        right: <Id.Eof_RParen _>
                      ) <.> <Id.Lit_BadBackslash '\\'> <n>
                    )
                  }
                )
              ]
              redirects: []
            )
            (C {<getGC>})
            (C {<getSite>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: {($ Id.VSub_DollarName siteName)}
                            )
                          redirects: []
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} 
                                {(DQ <'Site name not found.  Local DCs/GCs will not be discovered'>)}
                              )
                            right: <Id.Eof_RParen _>
                          ) <.> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                        )
                      }
                    )
                  ]
                  spids: [9427 9438]
                )
              ]
              else_action: [
                (C {<printf>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<gettext>} 
                            {
                              (DQ 
                                <
'Looking for _local_ KDCs, DCs and global catalog servers (SRV RRs)'
                                >
                              )
                            }
                          )
                        right: <Id.Eof_RParen _>
                      ) <.> <Id.Lit_BadBackslash '\\'> <n>
                    )
                  }
                )
                (C {<getKDCDC>})
                (C {<getGC>})
                (C {<write_ads_krb5conf>})
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_eq
                                  left: 
                                    {
                                      (braced_var_sub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name GCs>
                                        var_name: GCs
                                        prefix_op: <Id.VSub_Pound '#'>
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                  right: {<0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <'Could not find global catalogs.  Exiting'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [9492 9508]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<compareDomains>} {($ Id.VSub_DollarName realm)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'level='> name:level)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [9559]
                )
              ]
              redirects: []
            )
            (command.Pipeline
              children: [
                (C {<ldapsearch>} {<-R>} {<-T>} {<-h>} {(DQ ($ Id.VSub_DollarName dc))} 
                  {($ Id.VSub_DollarName ldap_args)} {<-b>} {(DQ )} {<-s>} {<base>} {(DQ )} {<domainControllerFunctionality>}
                )
                (C {<grep>} {<Id.Lit_Other '^'> <domainControllerFunctionality>})
                (C {<read>} {<j>} {<level>})
              ]
              negated: F
              stderr_indices: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_ne
                                  left: {($ Id.VSub_QMark '?')}
                                  right: {<0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (C {<gettext>} 
                                  {(DQ <'Search for domain functionality failed, exiting'>)}
                                )
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [9609 9622]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          words: [
                            {<ldapsearch>}
                            {<-R>}
                            {<-T>}
                            {<-h>}
                            {(DQ ($ Id.VSub_DollarName dc))}
                            {($ Id.VSub_DollarName ldap_args)}
                            {<-b>}
                            {(DQ ($ Id.VSub_DollarName baseDN))}
                            {<-s>}
                            {<sub>}
                            {<Id.Lit_VarLike 'sAMAccountName='> 
                              (DQ ($ Id.VSub_DollarName netbios_nodename))
                            }
                            {<dn>}
                          ]
                          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>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                    )
                  action: [(C {<Id.Lit_Colon ':'>})]
                  spids: [9651 9694]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<printf>}
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<gettext>} {(DQ <'Search for node failed, exiting'>)})
                          right: <Id.Eof_RParen _>
                        ) <.> <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  more_env: []
                  do_fork: T
                )
                (C {<error_message>})
              ]
              redirects: []
            )
            (command.Pipeline
              children: [
                (C {<ldapsearch>} {<-R>} {<-T>} {<-h>} {(DQ ($ Id.VSub_DollarName dc))} 
                  {($ Id.VSub_DollarName ldap_args)} {<-b>} {(DQ ($ Id.VSub_DollarName baseDN))} {<-s>} {<sub>} 
                  {<Id.Lit_VarLike 'sAMAccountName='> (DQ ($ Id.VSub_DollarName netbios_nodename))} {<dn>}
                )
                (C {<grep>} {(DQ <'^dn:'>)})
                (C {<read>} {<j>} {<dn>})
              ]
              negated: F
              stderr_indices: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName dn)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<Id.Lit_Colon ':'>})]
                  spids: [9775 9786]
                )
              ]
              else_action: [
                (C {<printf>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<gettext>} 
                            {(DQ <'Computer account \'%s\' already exists in the \'%s\' domain'>)}
                          )
                        right: <Id.Eof_RParen _>
                      ) <.> <Id.Lit_BadBackslash '\\'> <n>
                    )
                  } {($ Id.VSub_DollarName upcase_nodename)} {($ Id.VSub_DollarName realm)}
                )
                (C {<query>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<gettext>} {(DQ <'Do you wish to recreate this computer account'>)})
                        right: <Id.Eof_RParen _>
                      ) <' ?'>
                    )
                  }
                )
                (C {<printf>} {(DQ <Id.Lit_BadBackslash '\\'> <n>)})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {($ Id.VSub_DollarName answer)}
                                      right: {<yes>}
                                    )
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'recreate='> name:recreate)
                              op: assign_op.Equal
                              rhs: {<true>}
                              spids: [9856]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [9840 9853]
                    )
                  ]
                  else_action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'modify_existing='>
                              name: modify_existing
                            )
                          op: assign_op.Equal
                          rhs: {<true>}
                          spids: [9863]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {($ Id.VSub_DollarName modify_existing)}
                                      right: {<false>}
                                    )
                                  right: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_n
                                      child: {($ Id.VSub_DollarName dn)}
                                    )
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<query>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} 
                                {
                                  (DQ 
                                    <
'Would you like to delete any sub-object found for this computer account'
                                    >
                                  )
                                }
                              )
                            right: <Id.Eof_RParen _>
                          ) <' ?'>
                        )
                      }
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {($ Id.VSub_DollarName answer)}
                                          right: {<yes>}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<printf>} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {<gettext>} 
                                        {
                                          (DQ 
                                            <
'Looking to see if the machine account contains other objects'
                                            >
                                          )
                                        }
                                      )
                                    right: <Id.Eof_RParen _>
                                  ) <...> <Id.Lit_BadBackslash '\\'> <n>
                                )
                              }
                            )
                            (command.Pipeline
                              children: [
                                (C {<ldapsearch>} {<-R>} {<-T>} {<-h>} {(DQ ($ Id.VSub_DollarName dc))} 
                                  {($ Id.VSub_DollarName ldap_args)} {<-b>} {(DQ ($ Id.VSub_DollarName dn))} {<-s>} {<sub>} {(DQ )} {<dn>}
                                )
                                (command.WhileUntil
                                  keyword: <Id.KW_While while>
                                  cond: (condition.Shell commands:[(C {<read>} {<j>} {<sub_dn>})])
                                  body: 
                                    (command.DoGroup
                                      children: [
                                        (command.AndOr
                                          ops: [Id.Op_DAmp]
                                          children: [
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.LogicalOr
                                                  left: 
                                                    (bool_expr.Binary
                                                      op_id: Id.BoolBinary_GlobNEqual
                                                      left: {($ Id.VSub_DollarName j)}
                                                      right: {<dn> <Id.Lit_Colon ':'>}
                                                    )
                                                  right: 
                                                    (bool_expr.LogicalOr
                                                      left: 
                                                        (bool_expr.Unary
                                                          op_id: Id.BoolUnary_z
                                                          child: {($ Id.VSub_DollarName sub_dn)}
                                                        )
                                                      right: 
                                                        (bool_expr.Binary
                                                          op_id: Id.BoolBinary_GlobDEqual
                                                          left: {($ Id.VSub_DollarName dn)}
                                                          right: {($ Id.VSub_DollarName sub_dn)}
                                                        )
                                                    )
                                                )
                                              redirects: []
                                            )
                                            (command.ControlFlow
                                              token: <Id.ControlFlow_Continue continue>
                                            )
                                          ]
                                        )
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (command.Sentence
                                                      child: (C {($ Id.VSub_DollarName recreate)})
                                                      terminator: <Id.Op_Semi _>
                                                    )
                                                  ]
                                                )
                                              action: [
                                                (C {<printf>} 
                                                  {
                                                    (DQ 
                                                      (command_sub
                                                        left_token: <Id.Left_DollarParen '$('>
                                                        child: 
                                                          (C {<gettext>} 
                                                            {
                                                              (DQ 
                                                                <
'Deleting the following object: %s'
                                                                >
                                                              )
                                                            }
                                                          )
                                                        right: <Id.Eof_RParen _>
                                                      ) <Id.Lit_BadBackslash '\\'> <n>
                                                    )
                                                  } 
                                                  {
                                                    (braced_var_sub
                                                      left: <Id.Left_DollarBrace '${'>
                                                      token: <Id.VSub_Name sub_dn>
                                                      var_name: sub_dn
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          op: <Id.VOp1_Pound '#'>
                                                          arg_word: {($ Id.VSub_DollarName dn)}
                                                        )
                                                      right: <Id.Right_DollarBrace '}'>
                                                    )
                                                  }
                                                )
                                                (command.Simple
                                                  words: [
                                                    {<ldapdelete>}
                                                    {<-h>}
                                                    {(DQ ($ Id.VSub_DollarName dc))}
                                                    {($ Id.VSub_DollarName ldap_args)}
                                                    {(DQ ($ Id.VSub_DollarName sub_dn))}
                                                  ]
                                                  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>}
                                                    )
                                                  ]
                                                  more_env: []
                                                  do_fork: T
                                                )
                                                (command.If
                                                  arms: [
                                                    (if_arm
                                                      cond: 
                                                        (condition.Shell
                                                          commands: [
                                                            (command.Sentence
                                                              child: 
                                                                (command.DBracket
                                                                  expr: 
                                                                    (bool_expr.Binary
                                                                      op_id: Id.BoolBinary_ne
                                                                      left: {($ Id.VSub_QMark '?')}
                                                                      right: {<0>}
                                                                    )
                                                                  redirects: []
                                                                )
                                                              terminator: <Id.Op_Semi _>
                                                            )
                                                          ]
                                                        )
                                                      action: [
                                                        (C {<printf>} 
                                                          {
                                                            (DQ 
                                                              (command_sub
                                                                left_token: 
                                                                  <Id.Left_DollarParen '$('>
                                                                child: 
                                                                  (C {<gettext>} 
                                                                    {
                                                                      (DQ 
                                                                        <
'Error in deleting object: %s'
                                                                        >
                                                                      )
                                                                    }
                                                                  )
                                                                right: <Id.Eof_RParen _>
                                                              ) <.> <Id.Lit_BadBackslash '\\'> <n>
                                                            )
                                                          } 
                                                          {
                                                            (braced_var_sub
                                                              left: <Id.Left_DollarBrace '${'>
                                                              token: <Id.VSub_Name sub_dn>
                                                              var_name: sub_dn
                                                              suffix_op: 
                                                                (suffix_op.Unary
                                                                  op: <Id.VOp1_Pound '#'>
                                                                  arg_word: 
                                                                    {($ Id.VSub_DollarName dn)}
                                                                )
                                                              right: <Id.Right_DollarBrace '}'>
                                                            )
                                                          }
                                                        )
                                                      ]
                                                      spids: [10066 10079]
                                                    )
                                                  ]
                                                  else_action: []
                                                  redirects: []
                                                )
                                              ]
                                              spids: [10015 10020]
                                            )
                                          ]
                                          else_action: [
                                            (C {<printf>} 
                                              {
                                                (DQ 
                                                  (command_sub
                                                    left_token: <Id.Left_DollarParen '$('>
                                                    child: 
                                                      (C {<gettext>} 
                                                        {
                                                          (DQ 
                                                            <
'The following object will not be deleted'
                                                            >
                                                          )
                                                        }
                                                      )
                                                    right: <Id.Eof_RParen _>
                                                  ) <': %s'> <Id.Lit_BadBackslash '\\'> <n>
                                                )
                                              } 
                                              {
                                                (braced_var_sub
                                                  left: <Id.Left_DollarBrace '${'>
                                                  token: <Id.VSub_Name sub_dn>
                                                  var_name: sub_dn
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      op: <Id.VOp1_Pound '#'>
                                                      arg_word: {($ Id.VSub_DollarName dn)}
                                                    )
                                                  right: <Id.Right_DollarBrace '}'>
                                                )
                                              }
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                    )
                                  redirects: []
                                )
                              ]
                              negated: F
                              stderr_indices: []
                            )
                          ]
                          spids: [9910 9923]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {($ Id.VSub_DollarName recreate)})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<ldapdelete>}
                                {<-h>}
                                {(DQ ($ Id.VSub_DollarName dc))}
                                {($ Id.VSub_DollarName ldap_args)}
                                {(DQ ($ Id.VSub_DollarName dn))}
                              ]
                              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>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_ne
                                                  left: {($ Id.VSub_QMark '?')}
                                                  right: {<0>}
                                                )
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Simple
                                      words: [
                                        {<printf>}
                                        {
                                          (DQ 
                                            (command_sub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (C {<gettext>} {(DQ <'Error in deleting object: %s'>)})
                                              right: <Id.Eof_RParen _>
                                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                                          )
                                        }
                                        {
                                          (braced_var_sub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name sub_dn>
                                            var_name: sub_dn
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op: <Id.VOp1_Pound '#'>
                                                arg_word: {($ Id.VSub_DollarName dn)}
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                    (C {<error_message>})
                                  ]
                                  spids: [10172 10185]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                          spids: [10142 10147]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {($ Id.VSub_DollarName modify_existing)})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<Id.Lit_Colon ':'>})]
                          spids: [10219 10224]
                        )
                      ]
                      else_action: [
                        (command.Simple
                          words: [
                            {<printf>}
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: (C {<gettext>} {(DQ <'A machine account already exists'>)})
                                  right: <Id.Eof_RParen _>
                                ) <.> <Id.Lit_BadBackslash '\\'> <n>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (C {<error_message>})
                      ]
                      redirects: []
                    )
                  ]
                  spids: [9874 9893]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_DollarName dn)})
                  redirects: []
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dn='> name:dn)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ <'CN='> (${ Id.VSub_Name upcase_nodename) <','> (${ Id.VSub_Name baseDN))
                        }
                      spids: [10275]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {($ Id.VSub_DollarName modify_existing)})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName object))}
                        )
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 10346
                              stdin_parts: [
                                <'dn: '>
                                ($ Id.VSub_DollarName dn)
                                <'\n'>
                                <'changetype: modify\n'>
                                <'replace: userPrincipalName\n'>
                                <'userPrincipalName: '>
                                ($ Id.VSub_DollarName upn)
                                <'\n'>
                                <'-\n'>
                                <'replace: servicePrincipalName\n'>
                                <'servicePrincipalName: host/'>
                                (${ Id.VSub_Name fqdn)
                                <'\n'>
                                <'-\n'>
                                <'replace: userAccountControl\n'>
                                <'userAccountControl: '>
                                (word_part.ArithSub
                                  anode: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_Plus
                                          left: ($ Id.Lit_ArithVarLike userAccountControlBASE)
                                          right: {<Id.Lit_Digits 32>}
                                        )
                                      right: {<Id.Lit_Digits 2>}
                                    )
                                )
                                <'\n'>
                                <'-\n'>
                                <'replace: dNSHostname\n'>
                                <'dNSHostname: '>
                                (${ Id.VSub_Name fqdn)
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} {(DQ <'A machine account already exists; updating it'>)})
                            right: <Id.Eof_RParen _>
                          ) <.> <Id.Lit_BadBackslash '\\'> <n>
                        )
                      }
                    )
                    (command.Simple
                      words: [
                        {<ldapadd>}
                        {<-h>}
                        {(DQ ($ Id.VSub_DollarName dc))}
                        {($ Id.VSub_DollarName ldap_args)}
                        {<-f>}
                        {(DQ ($ Id.VSub_DollarName object))}
                      ]
                      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>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_ne
                                          left: {($ Id.VSub_QMark '?')}
                                          right: {<0>}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<printf>}
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (C {<gettext>} 
                                          {(DQ <'Failed to modify the AD object via LDAP'>)}
                                        )
                                      right: <Id.Eof_RParen _>
                                    ) <.> <Id.Lit_BadBackslash '\\'> <n>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (C {<error_message>})
                          ]
                          spids: [10389 10402]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [10288 10293]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dn='> name:dn)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ <'CN='> (${ Id.VSub_Name upcase_nodename) <','> (${ Id.VSub_Name baseDN))
                        }
                      spids: [10433]
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  words: [{<cat>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName object))}
                    )
                    (redir
                      op: <Id.Redir_DLess '<<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: 
                        (redir_param.HereDoc
                          here_begin: {<EOF>}
                          here_end_span_id: 10497
                          stdin_parts: [
                            <'dn: '>
                            ($ Id.VSub_DollarName dn)
                            <'\n'>
                            <'objectClass: computer\n'>
                            <'cn: '>
                            ($ Id.VSub_DollarName upcase_nodename)
                            <'\n'>
                            <'sAMAccountName: '>
                            (${ Id.VSub_Name netbios_nodename)
                            <'\n'>
                            <'userPrincipalName: '>
                            ($ Id.VSub_DollarName upn)
                            <'\n'>
                            <'servicePrincipalName: host/'>
                            (${ Id.VSub_Name fqdn)
                            <'\n'>
                            <'userAccountControl: '>
                            (word_part.ArithSub
                              anode: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_Plus
                                  left: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: ($ Id.Lit_ArithVarLike userAccountControlBASE)
                                      right: {<Id.Lit_Digits 32>}
                                    )
                                  right: {<Id.Lit_Digits 2>}
                                )
                            )
                            <'\n'>
                            <'dNSHostname: '>
                            (${ Id.VSub_Name fqdn)
                            <'\n'>
                          ]
                        )
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
                (C {<printf>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<gettext>} {(DQ <'Creating the machine account in AD via LDAP'>)})
                        right: <Id.Eof_RParen _>
                      ) <.> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                    )
                  }
                )
                (command.Simple
                  words: [
                    {<ldapadd>}
                    {<-h>}
                    {(DQ ($ Id.VSub_DollarName dc))}
                    {($ Id.VSub_DollarName ldap_args)}
                    {<-f>}
                    {(DQ ($ Id.VSub_DollarName object))}
                  ]
                  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>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_ne
                                      left: {($ Id.VSub_QMark '?')}
                                      right: {<0>}
                                    )
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [
                            {<printf>}
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (C {<gettext>} {(DQ <'Failed to create the AD object via LDAP'>)})
                                  right: <Id.Eof_RParen _>
                                ) <.> <Id.Lit_BadBackslash '\\'> <n>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (C {<error_message>})
                      ]
                      spids: [10543 10556]
                    )
                  ]
                  else_action: []
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAX_PASS='> name:MAX_PASS)
                  op: assign_op.Equal
                  rhs: {<120>}
                  spids: [10592]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [10596]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.LogicalNot
                                  child: (bool_expr.Unary op_id:Id.BoolUnary_e child:{<'/dev/random'>})
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <'/dev/random does not exist'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [10605 10618]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Great
                          left: ($ Id.Lit_ArithVarLike MAX_PASS)
                          right: ($ Id.Lit_ArithVarLike i)
                        )
                      redirects: []
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'c='> name:c)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<printf>} 
                                    {
                                      (DQ 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\\\'>
                                          ch: '\\'
                                        ) 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (C {<printf>} {<Id.Lit_Other '%'> <o>} 
                                              {
                                                (word_part.ArithSub
                                                  anode: 
                                                    (arith_expr.Binary
                                                      op_id: Id.Arith_Plus
                                                      left: 
                                                        (arith_expr.Binary
                                                          op_id: Id.Arith_Percent
                                                          left: 
                                                            {
                                                              (command_sub
                                                                left_token: 
                                                                  <Id.Left_DollarParen '$('>
                                                                child: (C {<gen_rand>})
                                                                right: <Id.Eof_RParen _>
                                                              )
                                                            }
                                                          right: {<Id.Lit_Digits 91>}
                                                        )
                                                      right: {<Id.Lit_Digits 32>}
                                                    )
                                                )
                                              }
                                            )
                                          right: <Id.Eof_RParen _>
                                        ) <Id.Lit_BadBackslash '\\'> <n>
                                      )
                                    }
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [10674]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName p) ($ Id.VSub_DollarName c))}
                          spids: [10707]
                        )
                      ]
                      redirects: []
                    )
                    (command.DParen
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_PlusEqual
                          left: ($ Id.Lit_ArithVarLike i)
                          right: {<Id.Lit_Digits 1>}
                        )
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'newpw='> name:newpw)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName p)}
                  spids: [10726]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_ne
                                  left: 
                                    {
                                      (braced_var_sub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name newpw>
                                        var_name: newpw
                                        prefix_op: <Id.VSub_Pound '#'>
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                  right: {<MAX_PASS>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <'Password created was of incorrect length'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [10730 10746]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Pipeline
              children: [
                (C {<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_DollarName newpw))})
                (command.Simple
                  words: [
                    {($ Id.VSub_DollarName KSETPW)}
                    {(${ Id.VSub_Name netbios_nodename) <Id.Lit_At '@'> (${ Id.VSub_Name realm)}
                  ]
                  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>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
              negated: F
              stderr_indices: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_ne
                              left: {($ Id.VSub_QMark '?')}
                              right: {<0>}
                            )
                          redirects: []
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<gettext>} {(DQ <'Failed to set account password'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [10809 10822]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Pipeline
              children: [
                (C {<ldapsearch>} {<-R>} {<-T>} {<-h>} {(DQ ($ Id.VSub_DollarName dc))} 
                  {($ Id.VSub_DollarName ldap_args)} {<-b>} {(DQ ($ Id.VSub_DollarName baseDN))} {<-s>} {<sub>} 
                  {<Id.Lit_VarLike 'cn='> ($ Id.VSub_DollarName upcase_nodename)} {<msDS-KeyVersionNumber>}
                )
                (C {<grep>} {(DQ <'^msDS-KeyVersionNumber'>)})
                (C {<read>} {<j>} {<kvno>})
              ]
              negated: F
              stderr_indices: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_DollarName kvno)})
                  redirects: []
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'kvno='> name:kvno)
                      op: assign_op.Equal
                      rhs: {<1>}
                      spids: [10912]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'userAccountControl='>
                      name: userAccountControl
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Plus
                            left: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Plus
                                left: ($ Id.Lit_ArithVarLike userAccountControlBASE)
                                right: {<Id.Lit_Digits 524288>}
                              )
                            right: {<Id.Lit_Digits 65536>}
                          )
                      )
                    }
                  spids: [10925]
                )
              ]
              redirects: []
            )
            (C {<set>} {<-A>} {<enctypes>} {<-->})
            (command.Pipeline
              children: [
                (C {<encrypt>} {<-l>})
                (C {<grep>} {<Id.Lit_Other '^'> <aes>})
                (C {<read>} {<j>} {<minkeysize>} {<maxkeysize>})
              ]
              negated: F
              stderr_indices: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'val='> name:val)
                  op: assign_op.Equal
                  rhs: (rhs_word.Empty)
                  spids: [10972]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_eq
                                  left: {($ Id.VSub_DollarName maxkeysize)}
                                  right: {<256>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'val='> name:val)
                          op: assign_op.Equal
                          rhs: {<16>}
                          spids: [10991]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 'enctypes['>
                              name: enctypes
                              index: 
                                {
                                  (braced_var_sub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name enctypes>
                                    var_name: enctypes
                                    prefix_op: <Id.VSub_Pound '#'>
                                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                            )
                          op: assign_op.Equal
                          rhs: {<aes256-cts-hmac-sha1-96>}
                          spids: [10995]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [10975 10988]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_eq
                                  left: {($ Id.VSub_DollarName minkeysize)}
                                  right: {<128>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.DParen
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike val)
                          right: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Plus
                              left: ($ Id.Lit_ArithVarLike val)
                              right: {<Id.Lit_Digits 8>}
                            )
                        )
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 'enctypes['>
                              name: enctypes
                              index: 
                                {
                                  (braced_var_sub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name enctypes>
                                    var_name: enctypes
                                    prefix_op: <Id.VSub_Pound '#'>
                                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                            )
                          op: assign_op.Equal
                          rhs: {<aes128-cts-hmac-sha1-96>}
                          spids: [11044]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [11018 11031]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<encrypt>} {<-l>})
                            (C {<grep>} {<-q>} {<Id.Lit_Other '^'> <arcfour>})
                          ]
                          negated: F
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.DParen
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike val)
                          right: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Plus
                              left: ($ Id.Lit_ArithVarLike val)
                              right: {<Id.Lit_Digits 4>}
                            )
                        )
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 'enctypes['>
                              name: enctypes
                              index: 
                                {
                                  (braced_var_sub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name enctypes>
                                    var_name: enctypes
                                    prefix_op: <Id.VSub_Pound '#'>
                                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                            )
                          op: assign_op.Equal
                          rhs: {<arcfour-hmac-md5>}
                          spids: [11099]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [11072 11086]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'userAccountControl='>
                          name: userAccountControl
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (word_part.ArithSub
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Plus
                                left: ($ Id.Lit_ArithVarLike userAccountControl)
                                right: {<Id.Lit_Digits 2097152>}
                              )
                          )
                        }
                      spids: [11126]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<encrypt>} {<-l>})
                            (C {<grep>} {<-q>} {<Id.Lit_Other '^'> <des>})
                          ]
                          negated: F
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.DParen
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike val)
                          right: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Plus
                              left: ($ Id.Lit_ArithVarLike val)
                              right: {<Id.Lit_Digits 2>}
                            )
                        )
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 'enctypes['>
                              name: enctypes
                              index: 
                                {
                                  (braced_var_sub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name enctypes>
                                    var_name: enctypes
                                    prefix_op: <Id.VSub_Pound '#'>
                                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                            )
                          op: assign_op.Equal
                          rhs: {<des-cbc-md5>}
                          spids: [11169]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [11140 11156]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_eq
                              left: 
                                {
                                  (braced_var_sub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name enctypes>
                                    var_name: enctypes
                                    prefix_op: <Id.VSub_Pound '#'>
                                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                              right: {<0>}
                            )
                          redirects: []
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<gettext>} {(DQ <'No enctypes are supported'>)})
                            right: <Id.Eof_RParen _>
                          ) <.> <Id.Lit_BadBackslash '\\'> <n>
                        )
                      }
                    )
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (C {<gettext>} 
                                  {
                                    (DQ 
                                      <
'Please enable arcfour or 1DES, then re-join; see cryptoadm(1M)'
                                      >
                                    )
                                  }
                                )
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [11193 11212]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_gt
                                  left: {($ Id.VSub_DollarName level)}
                                  right: {<2>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName object))}
                        )
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 11301
                              stdin_parts: [
                                <'dn: '>
                                ($ Id.VSub_DollarName dn)
                                <'\n'>
                                <'changetype: modify\n'>
                                <'replace: msDS-SupportedEncryptionTypes\n'>
                                <'msDS-SupportedEncryptionTypes: '>
                                ($ Id.VSub_DollarName val)
                                <'\n'>
                              ]
                            )
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.Simple
                      words: [
                        {<ldapmodify>}
                        {<-h>}
                        {(DQ ($ Id.VSub_DollarName dc))}
                        {($ Id.VSub_DollarName ldap_args)}
                        {<-f>}
                        {(DQ ($ Id.VSub_DollarName object))}
                      ]
                      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>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_ne
                                          left: {($ Id.VSub_QMark '?')}
                                          right: {<0>}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<printf>} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {<gettext>} 
                                        {
                                          (DQ 
                                            <
'Warning: Could not set the supported encryption type for computer account'
                                            >
                                          )
                                        }
                                      )
                                    right: <Id.Eof_RParen _>
                                  ) <.> <Id.Lit_BadBackslash '\\'> <n>
                                )
                              }
                            )
                          ]
                          spids: [11326 11339]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [11265 11278]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName object))}
                )
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 11426
                      stdin_parts: [
                        <'dn: '>
                        ($ Id.VSub_DollarName dn)
                        <'\n'>
                        <'changetype: modify\n'>
                        <'replace: userAccountControl\n'>
                        <'userAccountControl: '>
                        ($ Id.VSub_DollarName userAccountControl)
                        <'\n'>
                      ]
                    )
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<ldapmodify>}
                {<-h>}
                {(DQ ($ Id.VSub_DollarName dc))}
                {($ Id.VSub_DollarName ldap_args)}
                {<-f>}
                {(DQ ($ Id.VSub_DollarName object))}
              ]
              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>})
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_ne
                                  left: {($ Id.VSub_QMark '?')}
                                  right: {<0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (C {<gettext>} {(DQ <'ldapmodify failed to modify account attribute'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [11451 11464]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<set>} {<-A>} {<args>} {<-->})
            (command.ForEach
              iter_names: [enctype]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (DQ 
                        (braced_var_sub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name enctypes>
                          var_name: enctypes
                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 'args['>
                              name: args
                              index: 
                                {
                                  (braced_var_sub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name args>
                                    var_name: args
                                    prefix_op: <Id.VSub_Pound '#'>
                                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                            )
                          op: assign_op.Equal
                          rhs: {<-e>}
                          spids: [11525]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 'args['>
                              name: args
                              index: 
                                {
                                  (braced_var_sub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name args>
                                    var_name: args
                                    prefix_op: <Id.VSub_Pound '#'>
                                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName enctype)}
                          spids: [11545]
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.Simple
              words: [{<rm>} {($ Id.VSub_DollarName new_keytab)}]
              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>})
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName object))}
                )
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 11624
                      stdin_parts: [
                        <'dn: '>
                        ($ Id.VSub_DollarName dn)
                        <'\n'>
                        <'changetype: modify\n'>
                        <'add: servicePrincipalName\n'>
                        <'servicePrincipalName: nfs/'>
                        (${ Id.VSub_Name fqdn)
                        <'\n'>
                        <'servicePrincipalName: HTTP/'>
                        (${ Id.VSub_Name fqdn)
                        <'\n'>
                        <'servicePrincipalName: root/'>
                        (${ Id.VSub_Name fqdn)
                        <'\n'>
                        <'servicePrincipalName: cifs/'>
                        (${ Id.VSub_Name fqdn)
                        <'\n'>
                        <'servicePrincipalName: host/'>
                        (${ Id.VSub_Name upcase_nodename)
                        <'\n'>
                      ]
                    )
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<ldapmodify>}
                {<-h>}
                {(DQ ($ Id.VSub_DollarName dc))}
                {($ Id.VSub_DollarName ldap_args)}
                {<-f>}
                {(DQ ($ Id.VSub_DollarName object))}
              ]
              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>})
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_ne
                                  left: {($ Id.VSub_QMark '?')}
                                  right: {<0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (C {<gettext>} {(DQ <'ldapmodify failed to modify account attribute'>)})
                              right: <Id.Eof_RParen _>
                            ) <.> <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (C {<error_message>})
                  ]
                  spids: [11649 11662]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'salt='> name:salt)
                  op: assign_op.Equal
                  rhs: 
                    {<'host/'> (${ Id.VSub_Name locase_nodename) <.> (${ Id.VSub_Name domain) 
                      <Id.Lit_At '@'> (${ Id.VSub_Name realm)
                    }
                  spids: [11711]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skeys='> name:skeys)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {<'host/'> (${ Id.VSub_Name fqdn) <Id.Lit_At '@'> (${ Id.VSub_Name realm)}
                          {<'nfs/'> (${ Id.VSub_Name fqdn) <Id.Lit_At '@'> (${ Id.VSub_Name realm)}
                          {<'HTTP/'> (${ Id.VSub_Name fqdn) <Id.Lit_At '@'> (${ Id.VSub_Name realm)}
                        ]
                      )
                    }
                  spids: [11727]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skeys+='> name:skeys)
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {<'root/'> (${ Id.VSub_Name fqdn) <Id.Lit_At '@'> (${ Id.VSub_Name realm)}
                          {<'cifs/'> (${ Id.VSub_Name fqdn) <Id.Lit_At '@'> (${ Id.VSub_Name realm)}
                        ]
                      )
                    }
                  spids: [11758]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skeys+='> name:skeys)
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {(${ Id.VSub_Name netbios_nodename) <Id.Lit_At '@'> (${ Id.VSub_Name realm)}
                          {<'host/'> (${ Id.VSub_Name upcase_nodename) <Id.Lit_At '@'> 
                            (${ Id.VSub_Name realm)
                          }
                        ]
                      )
                    }
                  spids: [11780]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skeys+='> name:skeys)
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {<'cifs/'> (${ Id.VSub_Name upcase_nodename) <Id.Lit_At '@'> 
                            (${ Id.VSub_Name realm)
                          }
                        ]
                      )
                    }
                  spids: [11801]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ks_args='> name:ks_args)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'-n -s '> ($ Id.VSub_DollarName salt) <' -v '> ($ Id.VSub_DollarName kvno) 
                        <' -k '> ($ Id.VSub_DollarName new_keytab) <' '> 
                        (braced_var_sub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name args>
                          var_name: args
                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  spids: [11815]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [skey]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name skeys>
                        var_name: skeys
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Pipeline
                      children: [
                        (C {<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_DollarName newpw))})
                        (command.Simple
                          words: [
                            {($ Id.VSub_DollarName KSETPW)}
                            {($ Id.VSub_DollarName ks_args)}
                            {($ Id.VSub_DollarName skey)}
                          ]
                          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>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      negated: F
                      stderr_indices: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_ne
                                      left: {($ Id.VSub_QMark '?')}
                                      right: {<0>}
                                    )
                                  redirects: []
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<printf>}
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: (C {<gettext>} {(DQ <'Failed to set password'>)})
                                      right: <Id.Eof_RParen _>
                                    ) <.> <Id.Lit_BadBackslash '\\'> <n>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (C {<error_message>})
                          ]
                          spids: [11878 11891]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (C {<doKRB5config>})
            (C {<addDNSRR>} {($ Id.VSub_DollarName dom)})
            (C {<setSMB>} {($ Id.VSub_DollarName dom)} {($ Id.VSub_DollarName dc)})
            (C {<printf>} {<-->} 
              {
                (DQ <---------------------------------------------------> <Id.Lit_BadBackslash '\\'> 
                  <n>
                )
              }
            )
            (C {<printf>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<gettext>} {(DQ <'Setup COMPLETE'>)})
                    right: <Id.Eof_RParen _>
                  ) <.> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                )
              }
            )
            (command.Simple
              words: [{<kdestroy>} {<-q>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '1>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName TMP_FILE)}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              more_env: []
              do_fork: T
            )
            (C {<rm>} {<-f>} {($ Id.VSub_DollarName TMP_FILE)})
            (command.Simple
              words: [{<rm>} {<-rf>} {($ Id.VSub_DollarName TMPDIR)}]
              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>})
              ]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KRB5_CONFIG_FILE='> name:KRB5_CONFIG_FILE)
          op: assign_op.Equal
          rhs: {<'/etc/krb5/krb5.conf'>}
          spids: [12029]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KRB5_KEYTAB_FILE='> name:KRB5_KEYTAB_FILE)
          op: assign_op.Equal
          rhs: {<'/etc/krb5/krb5.keytab'>}
          spids: [12032]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RESOLV_CONF_FILE='> name:RESOLV_CONF_FILE)
          op: assign_op.Equal
          rhs: {<'/etc/resolv.conf'>}
          spids: [12035]
        )
      ]
      redirects: []
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KLOOKUP='> name:KLOOKUP)
                  op: assign_op.Equal
                  rhs: {<'/usr/lib/krb5/klookup'>}
                  spids: [12039]
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<check_bin>} {($ Id.VSub_DollarName KLOOKUP)})
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KSETPW='> name:KSETPW)
                  op: assign_op.Equal
                  rhs: {<'/usr/lib/krb5/ksetpw'>}
                  spids: [12047]
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<check_bin>} {($ Id.VSub_DollarName KSETPW)})
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KSMB='> name:KSMB)
                  op: assign_op.Equal
                  rhs: {<'/usr/lib/krb5/ksmb'>}
                  spids: [12055]
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<check_bin>} {($ Id.VSub_DollarName KSMB)})
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KDYNDNS='> name:KDYNDNS)
                  op: assign_op.Equal
                  rhs: {<'/usr/lib/krb5/kdyndns'>}
                  spids: [12063]
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<check_bin>} {($ Id.VSub_DollarName KDYNDNS)})
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KCONF='> name:KCONF)
                  op: assign_op.Equal
                  rhs: {<'/usr/lib/krb5/kconf'>}
                  spids: [12071]
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<check_bin>} {($ Id.VSub_DollarName KCONF)})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dns_lookup='> name:dns_lookup)
          op: assign_op.Equal
          rhs: {<no>}
          spids: [12080]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ask_fqdns='> name:ask_fqdns)
          op: assign_op.Equal
          rhs: {<no>}
          spids: [12083]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'adddns='> name:adddns)
          op: assign_op.Equal
          rhs: {<no>}
          spids: [12086]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'no_keytab='> name:no_keytab)
          op: assign_op.Equal
          rhs: {<no>}
          spids: [12089]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'checkval='> name:checkval)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [12092]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'profile='> name:profile)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [12096]
        )
      ]
      redirects: []
    )
    (C {<typeset>} {<-u>} {<realm>})
    (C {<typeset>} {<-l>} {<hostname>} {<KDC>})
    (C {<export>} {<Id.Lit_VarLike 'TMPDIR='> (DQ <'/var/run/kclient'>)})
    (command.Simple
      words: [{<mkdir>} {($ Id.VSub_DollarName TMPDIR)}]
      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>})
      ]
      more_env: []
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_ne
                          left: {($ Id.VSub_QMark '?')}
                          right: {<0>}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <n> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: (C {<gettext>} {(DQ <'Can not create directory: %s'>)})
                      right: <Id.Eof_RParen _>
                    ) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
                {($ Id.VSub_DollarName TMPDIR)}
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [12134 12147]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TMP_FILE='> name:TMP_FILE)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: (C {<mktemp>} {<-q>} {<-t>} {<kclient-tmpfile.XXXXXX>})
                right: <Id.Eof_RParen _>
              )
            }
          spids: [12181]
        )
      ]
      redirects: []
    )
    (C {<export>} 
      {<Id.Lit_VarLike 'KRB5_CONFIG='> 
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          child: (C {<mktemp>} {<-q>} {<-t>} {<kclient-krb5conf.XXXXXX>})
          right: <Id.Eof_RParen _>
        )
      }
    )
    (C {<export>} 
      {<Id.Lit_VarLike 'KRB5CCNAME='> 
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          child: (C {<mktemp>} {<-q>} {<-t>} {<kclient-krb5ccache.XXXXXX>})
          right: <Id.Eof_RParen _>
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'new_keytab='> name:new_keytab)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: (C {<mktemp>} {<-q>} {<-t>} {<kclient-krb5keytab.XXXXXX>})
                right: <Id.Eof_RParen _>
              )
            }
          spids: [12219]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.DBracket
                  expr: 
                    (bool_expr.LogicalOr
                      left: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_z
                          child: {($ Id.VSub_DollarName TMP_FILE)}
                        )
                      right: 
                        (bool_expr.LogicalOr
                          left: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: {($ Id.VSub_DollarName KRB5_CONFIG)}
                            )
                          right: 
                            (bool_expr.LogicalOr
                              left: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName KRB5CCNAME)}
                                )
                              right: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName new_keytab)}
                                )
                            )
                        )
                    )
                  redirects: []
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <n> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: (C {<gettext>} {(DQ <'Can not create temporary files, exiting'>)})
                      right: <Id.Eof_RParen _>
                    ) <.> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [12231 12259]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<trap>} {(DQ <'exiting 1'>)} {<HUP>} {<INT>} {<QUIT>} {<TERM>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: (bool_expr.Unary op_id:Id.BoolUnary_d child:{<'/usr/bin'>})
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: (bool_expr.Unary op_id:Id.BoolUnary_d child:{<'/usr/sbin'>})
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH)
                          op: assign_op.Equal
                          rhs: 
                            {<'/usr/bin'> <Id.Lit_Colon ':'> <'/usr/sbin'> <Id.Lit_Colon ':'> 
                              <'/usr/local/bin'> <Id.Lit_Colon ':'> <'/usr/local/sbin'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PATH)
                            }
                          spids: [12344]
                        )
                      ]
                      redirects: []
                    )
                    (C {<export>} {<PATH>})
                  ]
                  spids: [12330 12341]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<printf>}
                    {
                      (DQ <Id.Lit_BadBackslash '\\'> <n> 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<gettext>} {(DQ <'Directory /usr/sbin not found, exiting'>)})
                          right: <Id.Eof_RParen _>
                        ) <.> <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  more_env: []
                  do_fork: T
                )
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
              redirects: []
            )
          ]
          spids: [12316 12327]
        )
      ]
      else_action: [
        (command.Simple
          words: [
            {<printf>}
            {
              (DQ <Id.Lit_BadBackslash '\\'> <n> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<gettext>} {(DQ <'Directory /usr/bin not found, exiting'>)})
                  right: <Id.Eof_RParen _>
                ) <.> <Id.Lit_BadBackslash '\\'> <n>
              )
            }
          ]
          redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          more_env: []
          do_fork: T
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
      redirects: []
    )
    (C {<printf>} 
      {
        (DQ <Id.Lit_BadBackslash '\\'> <n> 
          (command_sub
            left_token: <Id.Left_DollarParen '$('>
            child: (C {<gettext>} {(DQ <'Starting client setup'>)})
            right: <Id.Eof_RParen _>
          ) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
        )
      }
    )
    (C {<printf>} {<-->} 
      {(DQ <---------------------------------------------------> <Id.Lit_BadBackslash '\\'> <n>)}
    )
    (command.Simple
      words: [{<id>}]
      redirects: [
        (redir
          op: <Id.Redir_Great '1>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName TMP_FILE)}
        )
        (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
      ]
      more_env: []
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_eq
                          left: {($ Id.VSub_QMark '?')}
                          right: {<0>}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<egrep>} {<-s>} 
                              {
                                (DQ <'uid=0'> <Id.Lit_BadBackslash '\\'> <'(root'> 
                                  <Id.Lit_BadBackslash '\\'> <')'>
                                )
                              } {($ Id.VSub_DollarName TMP_FILE)}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<Id.Lit_Colon ':'>})]
                  spids: [12485 12502]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<printf>}
                    {
                      (DQ <Id.Lit_BadBackslash '\\'> <n> 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (C {<gettext>} 
                              {
                                (DQ 
                                  <
'Administrative privileges are required to run this script, exiting'
                                  >
                                )
                              }
                            )
                          right: <Id.Eof_RParen _>
                        ) <.> <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  more_env: []
                  do_fork: T
                )
                (C {<error_message>})
              ]
              redirects: []
            )
          ]
          spids: [12469 12482]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<cat>} {($ Id.VSub_DollarName TMP_FILE)})
          terminator: <Id.Op_Semi _>
        )
        (command.Simple
          words: [
            {<printf>}
            {
              (DQ <Id.Lit_BadBackslash '\\'> <n> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<gettext>} {(DQ <'uid check failed, exiting'>)})
                  right: <Id.Eof_RParen _>
                ) <.> <Id.Lit_BadBackslash '\\'> <n>
              )
            }
          ]
          redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          more_env: []
          do_fork: T
        )
        (C {<error_message>})
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uname='> name:uname)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: (C {<uname>} {<-n>})
                right: <Id.Eof_RParen _>
              )
            }
          spids: [12576]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hostname='> name:hostname)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name uname>
                var_name: uname
                suffix_op: 
                  (suffix_op.Unary
                    op: <Id.VOp1_DPercent '%%'>
                    arg_word: {<.> <Id.Lit_Other '*'>}
                  )
                right: <Id.Right_DollarBrace '}'>
              )
            }
          spids: [12583]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTIND='> name:OPTIND)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [12601]
        )
      ]
      redirects: []
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (C {<getopts>} 
              {<nD> <Id.Lit_Colon ':'> <Kp> <Id.Lit_Colon ':'> <R> <Id.Lit_Colon ':'> <k> 
                <Id.Lit_Colon ':'> <a> <Id.Lit_Colon ':'> <c> <Id.Lit_Colon ':'> <d> <Id.Lit_Colon ':'> <f> <Id.Lit_Colon ':'> <h> 
                <Id.Lit_Colon ':'> <m> <Id.Lit_Colon ':'> <s> <Id.Lit_Colon ':'> <T> <Id.Lit_Colon ':'>
              } {<OPTIONS>}
            )
          ]
        )
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {($ Id.VSub_DollarName OPTIONS)}
              arms: [
                (case_arm
                  pat_list: [{<D>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName options) <' -D'>)}
                          spids: [12648]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'domain_list='>
                              name: domain_list
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName OPTARG))}
                          spids: [12655]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [12645 12646 12661 -1]
                )
                (case_arm
                  pat_list: [{<K>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName options) <' -K'>)}
                          spids: [12667]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'no_keytab='> name:no_keytab)
                          op: assign_op.Equal
                          rhs: {<yes>}
                          spids: [12674]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [12664 12665 12678 -1]
                )
                (case_arm
                  pat_list: [{<R>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName options) <' -R'>)}
                          spids: [12684]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'realm='> name:realm)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName OPTARG))}
                          spids: [12691]
                        )
                      ]
                      redirects: []
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'checkval='> name:checkval)
                              op: assign_op.Equal
                              rhs: {(DQ <REALM>)}
                              spids: [12697]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<check_value>} {($ Id.VSub_DollarName realm)})
                  ]
                  spids: [12681 12682 12708 -1]
                )
                (case_arm
                  pat_list: [{<T>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName options) <' -T'>)}
                          spids: [12714]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName OPTARG))}
                          spids: [12721]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {($ Id.VSub_DollarName type)}
                                          right: {<ms_ad>}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msad='> name:msad)
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                  spids: [12743]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'adddns='> name:adddns)
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                  spids: [12747]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [12727 12740]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'non_solaris='>
                                  name: non_solaris
                                )
                              op: assign_op.Equal
                              rhs: {<yes>}
                              spids: [12754]
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'no_keytab='>
                                  name: no_keytab
                                )
                              op: assign_op.Equal
                              rhs: {<yes>}
                              spids: [12758]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [12711 12712 12765 -1]
                )
                (case_arm
                  pat_list: [{<a>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName options) <' -a'>)}
                          spids: [12771]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'ADMIN_PRINC='>
                              name: ADMIN_PRINC
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName OPTARG))}
                          spids: [12778]
                        )
                      ]
                      redirects: []
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'checkval='> name:checkval)
                              op: assign_op.Equal
                              rhs: {(DQ <ADMIN_PRINC>)}
                              spids: [12784]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<check_value>} {($ Id.VSub_DollarName ADMIN_PRINC)})
                  ]
                  spids: [12768 12769 12795 -1]
                )
                (case_arm
                  pat_list: [{<c>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName options) <' -c'>)}
                          spids: [12801]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filepath='> name:filepath)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName OPTARG))}
                          spids: [12808]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [12798 12799 12814 -1]
                )
                (case_arm
                  pat_list: [{<d>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName options) <' -d'>)}
                          spids: [12820]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dnsarg='> name:dnsarg)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName OPTARG))}
                          spids: [12827]
                        )
                      ]
                      redirects: []
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'checkval='> name:checkval)
                              op: assign_op.Equal
                              rhs: {(DQ <DNS_OPTIONS>)}
                              spids: [12833]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<check_value>} {($ Id.VSub_DollarName dnsarg)})
                  ]
                  spids: [12817 12818 12844 -1]
                )
                (case_arm
                  pat_list: [{<f>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName options) <' -f'>)}
                          spids: [12850]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fqdnlist='> name:fqdnlist)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName OPTARG))}
                          spids: [12857]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [12847 12848 12863 -1]
                )
                (case_arm
                  pat_list: [{<h>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName options) <' -h'>)}
                          spids: [12869]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'logical_hn='> name:logical_hn)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName OPTARG))}
                          spids: [12876]
                        )
                      ]
                      redirects: []
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'checkval='> name:checkval)
                              op: assign_op.Equal
                              rhs: {(DQ <LOGICAL_HOSTNAME>)}
                              spids: [12882]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<check_value>} {($ Id.VSub_DollarName logical_hn)})
                  ]
                  spids: [12866 12867 12893 -1]
                )
                (case_arm
                  pat_list: [{<k>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName options) <' -k'>)}
                          spids: [12899]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'kdc_list='> name:kdc_list)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName OPTARG))}
                          spids: [12906]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [12896 12897 12912 -1]
                )
                (case_arm
                  pat_list: [{<m>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName options) <' -m'>)}
                          spids: [12918]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KDC='> name:KDC)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName OPTARG))}
                          spids: [12925]
                        )
                      ]
                      redirects: []
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'checkval='> name:checkval)
                              op: assign_op.Equal
                              rhs: {(DQ <KDC>)}
                              spids: [12931]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<check_value>} {($ Id.VSub_DollarName KDC)})
                  ]
                  spids: [12915 12916 12942 -1]
                )
                (case_arm
                  pat_list: [{<n>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName options) <' -n'>)}
                          spids: [12948]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'add_nfs='> name:add_nfs)
                          op: assign_op.Equal
                          rhs: {<yes>}
                          spids: [12955]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [12945 12946 12959 -1]
                )
                (case_arm
                  pat_list: [{<p>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName options) <' -p'>)}
                          spids: [12965]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'profile='> name:profile)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName OPTARG))}
                          spids: [12972]
                        )
                      ]
                      redirects: []
                    )
                    (C {<read_profile>} {($ Id.VSub_DollarName profile)})
                  ]
                  spids: [12962 12963 12983 -1]
                )
                (case_arm
                  pat_list: [{<s>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName options) <' -s'>)}
                          spids: [12989]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'svc_list='> name:svc_list)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName OPTARG))}
                          spids: [12996]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SVCs='> name:SVCs)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name svc_list>
                                var_name: svc_list
                                suffix_op: 
                                  (suffix_op.PatSub
                                    pat: {<','>}
                                    replace: {<' '>}
                                    replace_mode: Id.Lit_Slash
                                    slash_tok: <Id.VOp2_Slash _>
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [13002]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [12986 12987 13013 -1]
                )
                (case_arm
                  pat_list: [{(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}]
                  action: [(C {<usage>})]
                  spids: [13016 13017 13022 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<usage>})]
                  spids: [13025 13026 13031 -1]
                )
              ]
              redirects: []
            )
          ]
        )
      redirects: []
    )
    (C {<shift>} 
      {
        (command_sub
          left_token: <Id.Left_Backtick '`'>
          child: (C {<expr>} {($ Id.VSub_DollarName OPTIND)} {<->} {<1>})
          right: <Id.Backtick_Right '`'>
        )
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_z
                          child: {($ Id.VSub_DollarName options)}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<Id.Lit_Colon ':'>})]
          spids: [13057 13068]
        )
      ]
      else_action: [
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_ne
                              left: {($ Id.VSub_Pound '#')}
                              right: {<0>}
                            )
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [(C {<usage>})]
              spids: [13076 13089]
            )
          ]
          else_action: []
          redirects: []
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_z
                          child: {($ Id.VSub_DollarName options)}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<query>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<gettext>} {(DQ <'Is this a client of a non-Solaris KDC'>)})
                    right: <Id.Eof_RParen _>
                  ) <' ?'>
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'non_solaris='> name:non_solaris)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName answer)}
                  spids: [13137]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName non_solaris)}
                                  right: {<yes>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<gettext>} {(DQ <'Which type of KDC is the server'>)})
                            right: <Id.Eof_RParen _>
                          ) <':'> <Id.Lit_BadBackslash '\\'> <n>
                        )
                      }
                    )
                    (C {<printf>} 
                      {
                        (DQ <Id.Lit_BadBackslash '\\'> <t> 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<gettext>} {(DQ <'ms_ad: Microsoft Active Directory'>)})
                            right: <Id.Eof_RParen _>
                          ) <Id.Lit_BadBackslash '\\'> <n>
                        )
                      }
                    )
                    (C {<printf>} 
                      {
                        (DQ <Id.Lit_BadBackslash '\\'> <t> 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<gettext>} {(DQ <'mit: MIT KDC server'>)})
                            right: <Id.Eof_RParen _>
                          ) <Id.Lit_BadBackslash '\\'> <n>
                        )
                      }
                    )
                    (C {<printf>} 
                      {
                        (DQ <Id.Lit_BadBackslash '\\'> <t> 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<gettext>} {(DQ <'heimdal: Heimdal KDC server'>)})
                            right: <Id.Eof_RParen _>
                          ) <Id.Lit_BadBackslash '\\'> <n>
                        )
                      }
                    )
                    (C {<printf>} 
                      {
                        (DQ <Id.Lit_BadBackslash '\\'> <t> 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<gettext>} {(DQ <'shishi: Shishi KDC server'>)})
                            right: <Id.Eof_RParen _>
                          ) <Id.Lit_BadBackslash '\\'> <n>
                        )
                      }
                    )
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<gettext>} {(DQ <'Enter required KDC type'>)})
                            right: <Id.Eof_RParen _>
                          ) <': '>
                        )
                      }
                    )
                    (C {<read>} {<kdctype>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {($ Id.VSub_DollarName kdctype)}
                                          right: {<ms_ad>}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msad='> name:msad)
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                  spids: [13276]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [13260 13273]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.LogicalOr
                                          left: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobDEqual
                                              left: {($ Id.VSub_DollarName kdctype)}
                                              right: {<mit>}
                                            )
                                          right: 
                                            (bool_expr.LogicalOr
                                              left: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobDEqual
                                                  left: {($ Id.VSub_DollarName kdctype)}
                                                  right: {<heimdal>}
                                                )
                                              right: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobDEqual
                                                  left: {($ Id.VSub_DollarName kdctype)}
                                                  right: {<shishi>}
                                                )
                                            )
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'no_keytab='>
                                      name: no_keytab
                                    )
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                  spids: [13314]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [13280 13311]
                        )
                      ]
                      else_action: [
                        (command.Simple
                          words: [
                            {<printf>}
                            {
                              (DQ <Id.Lit_BadBackslash '\\'> <n> 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (C {<gettext>} 
                                      {
                                        (DQ 
                                          <
'Invalid KDC type option, valid types are ms_ad, mit, heimdal, or shishi, exiting'
                                          >
                                        )
                                      }
                                    )
                                  right: <Id.Eof_RParen _>
                                ) <.> <Id.Lit_BadBackslash '\\'> <n>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (C {<error_message>})
                      ]
                      redirects: []
                    )
                  ]
                  spids: [13141 13154]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          spids: [13109 13120]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName msad)}
              right: {<yes>}
            )
          redirects: []
        )
        (C {<join_domain>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_r
                          child: {($ Id.VSub_DollarName RESOLV_CONF_FILE)}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'client_machine='> name:client_machine)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {($ Id.VSub_DollarName KLOOKUP)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [13391]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_ne
                                  left: {($ Id.VSub_QMark '?')}
                                  right: {<0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {($ Id.VSub_DollarName adddns)}
                                          right: {<no>}
                                        )
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<printf>}
                                {
                                  (DQ <Id.Lit_BadBackslash '\\'> <n> 
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (C {<gettext>} 
                                          {
                                            (DQ 
                                              <
'%s does not have a DNS record and is required for Kerberos setup'
                                              >
                                            )
                                          }
                                        )
                                      right: <Id.Eof_RParen _>
                                    ) <Id.Lit_BadBackslash '\\'> <n>
                                  )
                                }
                                {($ Id.VSub_DollarName hostname)}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (C {<error_message>})
                          ]
                          spids: [13416 13429]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [13400 13413]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'adddns='> name:adddns)
                      op: assign_op.Equal
                      rhs: {<no>}
                      spids: [13476]
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hostname='> name:hostname)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (braced_var_sub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name client_machine>
                            var_name: client_machine
                            suffix_op: 
                              (suffix_op.Unary
                                op: <Id.VOp1_DPercent '%%'>
                                arg_word: {<.> <Id.Lit_Other '*'>}
                              )
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                      spids: [13481]
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'domain='> name:domain)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (braced_var_sub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name client_machine>
                            var_name: client_machine
                            suffix_op: 
                              (suffix_op.Unary
                                op: <Id.VOp1_Pound '#'>
                                arg_word: {<Id.Lit_Other '*'> <.>}
                              )
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                      spids: [13490]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'short_fqdn='> name:short_fqdn)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name domain>
                        var_name: domain
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VOp1_Pound '#'>
                            arg_word: {<Id.Lit_Other '*'> <.> <Id.Lit_Other '*'>}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  spids: [13503]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'short_fqdn='> name:short_fqdn)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {($ Id.VSub_DollarName short_fqdn)})
                              (C {<grep>} {(DQ <Id.Lit_BadBackslash '\\'> <.>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [13513]
                )
              ]
              redirects: []
            )
          ]
          spids: [13377 13388]
        )
      ]
      else_action: [
        (command.Simple
          words: [
            {<printf>}
            {
              (DQ <Id.Lit_BadBackslash '\\'> <n> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<gettext>} {(DQ <'%s does not exist and is required for Kerberos setup'>)})
                  right: <Id.Eof_RParen _>
                ) <Id.Lit_BadBackslash '\\'> <n>
              )
            }
            {($ Id.VSub_DollarName RESOLV_CONF_FILE)}
          ]
          redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          more_env: []
          do_fork: T
        )
        (command.Simple
          words: [
            {<printf>}
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<gettext>} {(DQ <'Refer to resolv.conf(4), exiting'>)})
                  right: <Id.Eof_RParen _>
                ) <.> <Id.Lit_BadBackslash '\\'> <n>
              )
            }
          ]
          redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          more_env: []
          do_fork: T
        )
        (C {<error_message>})
      ]
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<check_nss_conf>})
        (C {<printf>} 
          {
            (DQ 
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<gettext>} 
                    {(DQ <'/etc/nsswitch.conf does not make use of DNS for hosts and/or ipnodes'>)}
                  )
                right: <Id.Eof_RParen _>
              ) <.> <Id.Lit_BadBackslash '\\'> <n>
            )
          }
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DBracket
          expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{($ Id.VSub_DollarName fqdnlist)})
          redirects: []
        )
        (C {<verify_fqdnlist>} {(DQ ($ Id.VSub_DollarName fqdnlist))})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.LogicalAnd
                          left: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: {($ Id.VSub_DollarName dnsarg)}
                            )
                          right: 
                            (bool_expr.LogicalOr
                              left: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName options)}
                                )
                              right: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName filepath)}
                                )
                            )
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<query>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<gettext>} {(DQ <'Do you want to use DNS for kerberos lookups'>)})
                    right: <Id.Eof_RParen _>
                  ) <' ?'>
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName answer)}
                                  right: {<yes>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ <Id.Lit_BadBackslash '\\'> <n> 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} 
                                {
                                  (DQ 
                                    <
'Valid DNS lookup options are dns_lookup_kdc, dns_lookup_realm,'
                                    > <Id.Lit_BadBackslash '\\'> <'nand dns_fallback. Refer krb5.conf(4) for further details'>
                                  )
                                }
                              )
                            right: <Id.Eof_RParen _>
                          ) <.> <Id.Lit_BadBackslash '\\'> <n>
                        )
                      }
                    )
                    (C {<printf>} 
                      {
                        (DQ <Id.Lit_BadBackslash '\\'> <n> 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<gettext>} {(DQ <'Enter required DNS option'>)})
                            right: <Id.Eof_RParen _>
                          ) <': '>
                        )
                      }
                    )
                    (C {<read>} {<dnsarg>})
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'checkval='> name:checkval)
                              op: assign_op.Equal
                              rhs: {(DQ <DNS_OPTIONS>)}
                              spids: [13726]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<check_value>} {($ Id.VSub_DollarName dnsarg)})
                    (C {<set_dns_value>} {($ Id.VSub_DollarName dnsarg)})
                  ]
                  spids: [13669 13682]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          spids: [13627 13652]
        )
      ]
      else_action: [
        (command.AndOr
          ops: [Id.Op_DAmp]
          children: [
            (command.DBracket
              expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_DollarName dnsarg)})
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dnsarg='> name:dnsarg)
                  op: assign_op.Equal
                  rhs: {<none>}
                  spids: [13757]
                )
              ]
              redirects: []
            )
          ]
        )
        (C {<set_dns_value>} {($ Id.VSub_DollarName dnsarg)})
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_n
                          child: {($ Id.VSub_DollarName kdc_list)}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName KDC)}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ForEach
                      iter_names: [kdc]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName kdc_list)}])
                      body: 
                        (command.DoGroup
                          children: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                        )
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KDC='> name:KDC)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName kdc))}
                          spids: [13814]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [13782 13793]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          spids: [13768 13779]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_DollarName realm)})
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<printf>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<gettext>} {(DQ <'Enter the Kerberos realm'>)})
                    right: <Id.Eof_RParen _>
                  ) <': '>
                )
              }
            )
            (C {<read>} {<realm>})
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'checkval='> name:checkval)
                      op: assign_op.Equal
                      rhs: {(DQ <REALM>)}
                      spids: [13858]
                    )
                  ]
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<check_value>} {($ Id.VSub_DollarName realm)})
          ]
          spids: [13825 13836]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{($ Id.VSub_DollarName KDC)})
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<printf>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (C {<gettext>} {(DQ <'Specify the master KDC hostname for the above realm'>)})
                    right: <Id.Eof_RParen _>
                  ) <': '>
                )
              }
            )
            (C {<read>} {<KDC>})
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'checkval='> name:checkval)
                      op: assign_op.Equal
                      rhs: {(DQ <KDC>)}
                      spids: [13903]
                    )
                  ]
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<check_value>} {($ Id.VSub_DollarName KDC)})
          ]
          spids: [13870 13881]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FKDC='> name:FKDC)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {($ Id.VSub_DollarName KLOOKUP)} {($ Id.VSub_DollarName KDC)})
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [13916]
        )
      ]
      redirects: []
    )
    (C {<ping_check>} {($ Id.VSub_DollarName FKDC)} {(DQ <KDC>)})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.LogicalAnd
                          left: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: {($ Id.VSub_DollarName kdc_list)}
                            )
                          right: 
                            (bool_expr.LogicalOr
                              left: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName options)}
                                )
                              right: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName filepath)}
                                )
                            )
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<query>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<gettext>} {(DQ <'Do you have any slave KDC(s)'>)})
                    right: <Id.Eof_RParen _>
                  ) <' ?'>
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName answer)}
                                  right: {<yes>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} 
                                {(DQ <'Enter a comma-separated list of slave KDC host names'>)}
                              )
                            right: <Id.Eof_RParen _>
                          ) <': '>
                        )
                      }
                    )
                    (C {<read>} {<kdc_list>})
                  ]
                  spids: [13986 13999]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          spids: [13944 13969]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DBracket
          expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{($ Id.VSub_DollarName kdc_list)})
          redirects: []
        )
        (C {<verify_kdcs>} {(DQ ($ Id.VSub_DollarName kdc_list))})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_z
                          child: {($ Id.VSub_DollarName options)}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<query>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<gettext>} {(DQ <'Will this client need service keys'>)})
                    right: <Id.Eof_RParen _>
                  ) <' ?'>
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName answer)}
                                  right: {<no>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'no_keytab='> name:no_keytab)
                          op: assign_op.Equal
                          rhs: {<yes>}
                          spids: [14096]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [14080 14093]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          spids: [14052 14063]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_z
                          child: {($ Id.VSub_DollarName options)}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<query>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (C {<gettext>} 
                        {(DQ <'Is this client a member of a cluster that uses a logical host name'>)}
                      )
                    right: <Id.Eof_RParen _>
                  ) <' ?'>
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName answer)}
                                  right: {<yes>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} {(DQ <'Specify the logical hostname of the cluster'>)})
                            right: <Id.Eof_RParen _>
                          ) <': '>
                        )
                      }
                    )
                    (C {<read>} {<logical_hn>})
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'checkval='> name:checkval)
                              op: assign_op.Equal
                              rhs: {(DQ <LOGICAL_HOSTNAME>)}
                              spids: [14180]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<check_value>} {($ Id.VSub_DollarName logical_hn)})
                    (C {<setup_lhn>})
                  ]
                  spids: [14145 14158]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          spids: [14117 14128]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.LogicalAnd
                          left: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: {($ Id.VSub_DollarName domain_list)}
                            )
                          right: 
                            (bool_expr.LogicalOr
                              left: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName options)}
                                )
                              right: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName filepath)}
                                )
                            )
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<query>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (C {<gettext>} {(DQ <'Do you have multiple domains/hosts to map to realm %s'>)})
                    right: <Id.Eof_RParen _>
                  ) <' ?'>
                )
              } {($ Id.VSub_DollarName realm)}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName answer)}
                                  right: {<yes>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} 
                                {
                                  (DQ <'Enter a comma-separated list of domain/hosts\n'> 
                                    <'to map to the default realm'>
                                  )
                                }
                              )
                            right: <Id.Eof_RParen _>
                          ) <': '>
                        )
                      }
                    )
                    (C {<read>} {<domain_list>})
                  ]
                  spids: [14244 14257]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          spids: [14199 14224]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DBracket
          expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{<domain_list>})
          redirects: []
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'domain_list='> name:domain_list)
              op: assign_op.Equal
              rhs: 
                {
                  (braced_var_sub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name domain_list>
                    var_name: domain_list
                    suffix_op: 
                      (suffix_op.PatSub
                        pat: {<','>}
                        replace: {<' '>}
                        replace_mode: Id.Lit_Slash
                        slash_tok: <Id.VOp2_Slash _>
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              spids: [14294]
            )
          ]
          redirects: []
        )
      ]
    )
    (C {<writeup_krb5_conf>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_z
                          child: {($ Id.VSub_DollarName options)}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<query>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<gettext>} {(DQ <'Do you plan on doing Kerberized nfs'>)})
                    right: <Id.Eof_RParen _>
                  ) <' ?'>
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'add_nfs='> name:add_nfs)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName answer)}
                  spids: [14360]
                )
              ]
              redirects: []
            )
          ]
          spids: [14332 14343]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobDEqual
                          left: {($ Id.VSub_DollarName add_nfs)}
                          right: {<yes>}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<modify_nfssec_conf>})
            (C {<svcadm>} {<enable>} 
              {<svc> <Id.Lit_Colon ':'> <'/network/rpc/gss'> <Id.Lit_Colon ':'> <default>}
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: Id.BoolBinary_ne
                      left: {($ Id.VSub_QMark '?')}
                      right: {<0>}
                    )
                  redirects: []
                )
                (C {<printf>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<gettext>} {(DQ <'Warning: could not enable gss service'>)})
                        right: <Id.Eof_RParen _>
                      ) <.> <Id.Lit_BadBackslash '\\'> <n>
                    )
                  }
                )
              ]
            )
          ]
          spids: [14366 14379]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_z
                          child: {($ Id.VSub_DollarName options)}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<query>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<gettext>} {(DQ <'Do you want to update /etc/pam.conf'>)})
                    right: <Id.Eof_RParen _>
                  ) <' ?'>
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName answer)}
                                  right: {<yes>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} 
                                {
                                  (DQ 
                                    <
'Enter a list of PAM service names in the following format: service:{first|only|optional}[,..]'
                                    >
                                  )
                                }
                              )
                            right: <Id.Eof_RParen _>
                          ) <': '>
                        )
                      }
                    )
                    (C {<read>} {<svc_list>})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SVCs='> name:SVCs)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name svc_list>
                                var_name: svc_list
                                suffix_op: 
                                  (suffix_op.PatSub
                                    pat: {<','>}
                                    replace: {<' '>}
                                    replace_mode: Id.Lit_Slash
                                    slash_tok: <Id.VOp2_Slash _>
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [14502]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [14467 14480]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          spids: [14439 14450]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DBracket
          expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{($ Id.VSub_DollarName svc_list)})
          redirects: []
        )
        (C {<update_pam_conf>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.LogicalOr
                          left: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: {($ Id.VSub_DollarName options)}
                            )
                          right: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: {($ Id.VSub_DollarName filepath)}
                            )
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<query>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<gettext>} {(DQ <'Do you want to copy over the master krb5.conf file'>)})
                    right: <Id.Eof_RParen _>
                  ) <' ?'>
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName answer)}
                                  right: {<yes>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} {(DQ <'Enter the pathname of the file to be copied'>)})
                            right: <Id.Eof_RParen _>
                          ) <': '>
                        )
                      }
                    )
                    (C {<read>} {<filepath>})
                  ]
                  spids: [14573 14586]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          spids: [14539 14556]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.LogicalAnd
                          left: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_n
                              child: {($ Id.VSub_DollarName filepath)}
                            )
                          right: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_r
                              child: {($ Id.VSub_DollarName filepath)}
                            )
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<cp>} {($ Id.VSub_DollarName filepath)} {($ Id.VSub_DollarName KRB5_CONFIG)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_eq
                                  left: {($ Id.VSub_QMark '?')}
                                  right: {<0>}
                                )
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<printf>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<gettext>} {(DQ <'Copied %s to %s'>)})
                            right: <Id.Eof_RParen _>
                          ) <.> <Id.Lit_BadBackslash '\\'> <n>
                        )
                      } {($ Id.VSub_DollarName filepath)} {($ Id.VSub_DollarName KRB5_CONFIG)}
                    )
                  ]
                  spids: [14640 14653]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<printf>}
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<gettext>} {(DQ <'Copy of %s failed, exiting'>)})
                          right: <Id.Eof_RParen _>
                        ) <.> <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                    {($ Id.VSub_DollarName filepath)}
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  more_env: []
                  do_fork: T
                )
                (C {<error_message>})
              ]
              redirects: []
            )
          ]
          spids: [14613 14630]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_n
                          child: {($ Id.VSub_DollarName filepath)}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <n> 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: (C {<gettext>} {(DQ <'%s not found, exiting'>)})
                      right: <Id.Eof_RParen _>
                    ) <.> <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
                {($ Id.VSub_DollarName filepath)}
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (C {<error_message>})
          ]
          spids: [14705 14716]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<doKRB5config>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobNEqual
                          left: {($ Id.VSub_DollarName no_keytab)}
                          right: {<yes>}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<setup_keytab>})]
          spids: [14759 14772]
        )
      ]
      else_action: [
        (C {<printf>} 
          {
            (DQ <Id.Lit_BadBackslash '\\'> <n> 
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<gettext>} 
                    {
                      (DQ 
                        <
'Note: %s file not created, please refer to verify_ap_req_nofail in krb5.conf(4) for the implications'
                        >
                      )
                    }
                  )
                right: <Id.Eof_RParen _>
              ) <.> <Id.Lit_BadBackslash '\\'> <n>
            )
          } {($ Id.VSub_DollarName KRB5_KEYTAB_FILE)}
        )
        (C {<printf>} 
          {
            (DQ 
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<gettext>} 
                    {(DQ <'Client will also not be able to host services that use Kerberos'>)}
                  )
                right: <Id.Eof_RParen _>
              ) <.> <Id.Lit_BadBackslash '\\'> <n>
            )
          }
        )
      ]
      redirects: []
    )
    (C {<printf>} {<-->} 
      {
        (DQ <Id.Lit_BadBackslash '\\'> <n---------------------------------------------------> 
          <Id.Lit_BadBackslash '\\'> <n>
        )
      }
    )
    (C {<printf>} 
      {
        (DQ 
          (command_sub
            left_token: <Id.Left_DollarParen '$('>
            child: (C {<gettext>} {(DQ <'Setup COMPLETE'>)})
            right: <Id.Eof_RParen _>
          ) <.> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
        )
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_n
                          child: {($ Id.VSub_DollarName logical_hn)}
                        )
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<printf>} 
              {
                (DQ <Id.Lit_BadBackslash '\\'> <n> 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (C {<gettext>} 
                        {
                          (DQ 
                            <
'Note, you will need to securely transfer the /etc/krb5/krb5.keytab and /etc/krb5/krb5.conf files to all the other members of your cluster'
                            >
                          )
                        }
                      )
                    right: <Id.Eof_RParen _>
                  ) <.> <Id.Lit_BadBackslash '\\'> <n>
                )
              }
            )
          ]
          spids: [14859 14870]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.Simple
      words: [{<kdestroy>} {<-q>}]
      redirects: [
        (redir
          op: <Id.Redir_Great '1>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName TMP_FILE)}
        )
        (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
      ]
      more_env: []
      do_fork: T
    )
    (C {<rm>} {<-f>} {($ Id.VSub_DollarName TMP_FILE)})
    (command.Simple
      words: [{<rm>} {<-rf>} {($ Id.VSub_DollarName TMPDIR)}]
      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>})
      ]
      more_env: []
      do_fork: T
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)