(command.CommandList
  children: [
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (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 ':'> 
                      ($ Id.VSub_DollarName PATH)
                    }
                  spids: [78]
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<export>} {<PATH>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STMSBOOTUTIL='> name:STMSBOOTUTIL)
          op: assign_op.Equal
          rhs: {<'/lib/mpxio/stmsboot_util'>}
          spids: [90]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STMSMETHODSCRIPT='> name:STMSMETHODSCRIPT)
          op: assign_op.Equal
          rhs: {<'/lib/svc/method/mpxio-upgrade'>}
          spids: [93]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KDRVCONF='> name:KDRVCONF)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [96]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DRVCONF='> name:DRVCONF)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [98]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TMPDRVCONF='> name:TMPDRVCONF)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [100]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'TMPDRVCONF_MPXIO_ENTRY='>
              name: TMPDRVCONF_MPXIO_ENTRY
            )
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [102]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'TMPDRVCONF_SATA_ENTRY='>
              name: TMPDRVCONF_SATA_ENTRY
            )
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [104]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DRVLIST='> name:DRVLIST)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [106]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GUID='> name:GUID)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [108]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VFSTAB='> name:VFSTAB)
          op: assign_op.Equal
          rhs: {<'/etc/vfstab'>}
          spids: [110]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SAVEDIR='> name:SAVEDIR)
          op: assign_op.Equal
          rhs: {<'/etc/mpxio'>}
          spids: [113]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BOOTDEVICES='> name:BOOTDEVICES)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName SAVEDIR) <'/boot-devices'>}
          spids: [116]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RECOVERFILE='> name:RECOVERFILE)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName SAVEDIR) <'/recover_instructions'>}
          spids: [120]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SVCCFG_RECOVERY='> name:SVCCFG_RECOVERY)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName SAVEDIR) <'/svccfg_recover'>}
          spids: [124]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SUPPORTED_DRIVERS='> name:SUPPORTED_DRIVERS)
          op: assign_op.Equal
          rhs: {(DQ <'fp|mpt|mpt_sas|pmcs'>)}
          spids: [128]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (C {<gettext>} 
                    {
                      (DQ <'Usage: stmsboot [-D '> ($ Id.VSub_DollarName SUPPORTED_DRIVERS) 
                        <'] -e | -d | -u | -L | -l controller_number'>
                      )
                    }
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [133]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEXTDOMAIN='> name:TEXTDOMAIN)
          op: assign_op.Equal
          rhs: {<SUNW_OST_OSCMD>}
          spids: [146]
        )
      ]
      redirects: []
    )
    (C {<export>} {<TEXTDOMAIN>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STMSINSTANCE='> name:STMSINSTANCE)
          op: assign_op.Equal
          rhs: {<svc> <Id.Lit_Colon ':'> <'system/device/mpxio-upgrade'> <Id.Lit_Colon ':'> <default>}
          spids: [153]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FASTBOOTINSTANCE='> name:FASTBOOTINSTANCE)
          op: assign_op.Equal
          rhs: {<svc> <Id.Lit_Colon ':'> <'system/boot-config'> <Id.Lit_Colon ':'> <default>}
          spids: [160]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STMSBOOT='> name:STMSBOOT)
          op: assign_op.Equal
          rhs: {<'/usr/sbin/stmsboot'>}
          spids: [167]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BOOTADM='> name:BOOTADM)
          op: assign_op.Equal
          rhs: {<'/sbin/bootadm'>}
          spids: [170]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MOUNT='> name:MOUNT)
          op: assign_op.Equal
          rhs: {<'/usr/sbin/mount'>}
          spids: [173]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EEPROM='> name:EEPROM)
          op: assign_op.Equal
          rhs: {<'/usr/sbin/eeprom'>}
          spids: [176]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EGREP='> name:EGREP)
          op: assign_op.Equal
          rhs: {<'/usr/bin/egrep'>}
          spids: [179]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GREP='> name:GREP)
          op: assign_op.Equal
          rhs: {<'/usr/bin/grep'>}
          spids: [182]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'AWK='> name:AWK)
          op: assign_op.Equal
          rhs: {<'/usr/bin/awk'>}
          spids: [185]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CP='> name:CP)
          op: assign_op.Equal
          rhs: {<'/usr/bin/cp'>}
          spids: [188]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DF='> name:DF)
          op: assign_op.Equal
          rhs: {<'/usr/bin/df'>}
          spids: [191]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LS='> name:LS)
          op: assign_op.Equal
          rhs: {<'/usr/bin/ls'>}
          spids: [194]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MV='> name:MV)
          op: assign_op.Equal
          rhs: {<'/usr/bin/mv'>}
          spids: [197]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RM='> name:RM)
          op: assign_op.Equal
          rhs: {<'/usr/bin/rm'>}
          spids: [200]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SORT='> name:SORT)
          op: assign_op.Equal
          rhs: {<'/usr/bin/sort'>}
          spids: [203]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNIQ='> name:UNIQ)
          op: assign_op.Equal
          rhs: {<'/usr/bin/uniq'>}
          spids: [206]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXPR='> name:EXPR)
          op: assign_op.Equal
          rhs: {<'/usr/bin/expr'>}
          spids: [209]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MKDIR='> name:MKDIR)
          op: assign_op.Equal
          rhs: {<'/usr/bin/mkdir'>}
          spids: [212]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REBOOT='> name:REBOOT)
          op: assign_op.Equal
          rhs: {<'/usr/sbin/reboot'>}
          spids: [215]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SED='> name:SED)
          op: assign_op.Equal
          rhs: {<'/usr/bin/sed'>}
          spids: [218]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SVCPROP='> name:SVCPROP)
          op: assign_op.Equal
          rhs: {<'/usr/bin/svcprop'>}
          spids: [221]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SVCCFG='> name:SVCCFG)
          op: assign_op.Equal
          rhs: {<'/usr/sbin/svccfg'>}
          spids: [224]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SVCS='> name:SVCS)
          op: assign_op.Equal
          rhs: {<'/usr/bin/svcs'>}
          spids: [227]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SVCADM='> name:SVCADM)
          op: assign_op.Equal
          rhs: {<'/usr/sbin/svcadm'>}
          spids: [230]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NOW='> name:NOW)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (C {<'/usr/bin/date'>} 
                    {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <G> <Id.Lit_Other '%'> <m> <Id.Lit_Other '%'> 
                      <d_> <Id.Lit_Other '%'> <H> <Id.Lit_Other '%'> <M>
                    }
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [234]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MACH='> name:MACH)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {<'/usr/bin/uname'>} {<-p>})
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [253]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BOOTENV_FILE='> name:BOOTENV_FILE)
          op: assign_op.Equal
          rhs: {<bootenv.rc>}
          spids: [262]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'reboot_needed='> name:reboot_needed)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [265]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'new_bootpath='> name:new_bootpath)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [268]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CLIENT_TYPE_PHCI='> name:CLIENT_TYPE_PHCI)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [272]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CLIENT_TYPE_VHCI='> name:CLIENT_TYPE_VHCI)
          op: assign_op.Equal
          rhs: {(DQ <'/scsi_vhci'>)}
          spids: [276]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: delete_mpxio_disable_entries
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName SED)}
                {
                  (SQ <'\n'> <'\t\t/^[ \t]*#/{ p\n'> <'\t\t\t      d\n'> <'\t\t\t    }\n'> 
                    <'\t\ts/[ \t]*$//\n'> <'\t\t/^$/{ p\n'> <'\t\t      d\n'> <'\t\t    }\n'> <'\t\t/mpxio-disable[ \t]*=.*;$/{ w '>
                  ) ($ Id.VSub_Number 3) 
                  (SQ <'\n'> <'\t\t\t\t\t\t  d\n'> <'\t\t\t\t\t\t}\n'> 
                    <'\t\t/disable-sata-mpxio[ \t]*=.*;$/{ w '>
                  ) ($ Id.VSub_Number 4) 
                  (SQ <'\n'> <'\t\t\t\t\t\t  d\n'> <'\t\t\t\t\t\t}\n'> <'\t\t/;$/{ p\n'> 
                    <'\t\t      d\n'> <'\t\t    }\n'> <'\t\t:rdnext\n'> <'\t\tN\n'> <'\t\ts/[ \t]*$//\n'> <'\t\t/[^;]$/b rdnext\n'> 
                    <'\t\t/mpxio-disable[ \t]*=/{ s/\\n/ /g\n'> <'\t\t\t\t\t      w '>
                  ) ($ Id.VSub_Number 3) (SQ <'\n'> <'\t\t\t\t\t      d\n'> <'\t\t\t\t\t    }\n'> <'\t\t'>)
                }
                {($ Id.VSub_Number 1)}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_Number 2)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_QMark '?')}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: backup_lastsaved
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              iter_names: [file]
              iterable: (for_iter.Words words:[{($ Id.VSub_Star '*')}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'newfile='> name:newfile)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<basename>} {($ Id.VSub_DollarName file)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [419]
                        )
                      ]
                      redirects: []
                    )
                    (C {($ Id.VSub_DollarName CP)} {($ Id.VSub_DollarName file)} 
                      {($ Id.VSub_DollarName SAVEDIR) <'/'> ($ Id.VSub_DollarName newfile) <.> 
                        ($ Id.VSub_DollarName cmd) <.> ($ Id.VSub_DollarName NOW)
                      }
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: build_recover
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [
                {<gettext>}
                {
                  (DQ 
                    <
'Instructions to recover your previous STMS configuration (if in case the system does not boot):'
                    > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName RECOVERFILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<echo>}
                {(DQ <Id.Lit_BadBackslash '\\'> <'tboot net '> <Id.Lit_BadBackslash '\\'> <c>)}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName RECOVERFILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<gettext>}
                {(DQ <'(or from a cd/dvd/another disk)'> <Id.Lit_BadBackslash '\\'> <n>)}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName RECOVERFILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(DQ <Id.Lit_BadBackslash '\\'> <'tfsck <your-root-device>'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName RECOVERFILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(DQ <Id.Lit_BadBackslash '\\'> <'tmount <your-root-device> /mnt'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName RECOVERFILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName cmd))} 
                              {<Id.Lit_Equals '='>} {(DQ <update>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<gettext>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> 
                            <'tUndo the modifications you made to STMS configuration.'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'tFor example undo any changes you made to '>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName RECOVERFILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'/mnt'> ($ Id.VSub_DollarName KDRVCONF) <.>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName RECOVERFILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [539 556]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (DQ <Id.Lit_BadBackslash '\\'> <'tcp /mnt'> (${ Id.VSub_Name SAVEDIR) <'/'> 
                        ($ Id.VSub_DollarName DRVCONF) <.> ($ Id.VSub_DollarName cmd) <.> ($ Id.VSub_DollarName NOW) <' /mnt'> ($ Id.VSub_DollarName KDRVCONF)
                      )
                    }
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName RECOVERFILE)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number 1)} {<-eq>} {<1>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <'tcp /mnt'> (${ Id.VSub_Name SAVEDIR) 
                            <'/vfstab.'> ($ Id.VSub_DollarName cmd) <.> ($ Id.VSub_DollarName NOW) <' /mnt'> ($ Id.VSub_DollarName VFSTAB)
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName RECOVERFILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'repository /mnt/etc/svc/repository.db'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName SVCCFG_RECOVERY)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'select '> ($ Id.VSub_DollarName STMSINSTANCE))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName SVCCFG_RECOVERY)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'setprop general/enabled=false'>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName SVCCFG_RECOVERY)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <exit>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName SVCCFG_RECOVERY)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <Id.Lit_BadBackslash '\\'> <t> ($ Id.VSub_DollarName SVCCFG) <' -f /mnt'> 
                            ($ Id.VSub_DollarName SVCCFG_RECOVERY)
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName RECOVERFILE)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                      {(DQ ($ Id.VSub_DollarName new_bootpath))} {<-a>} {(DQ ($ Id.VSub_DollarName MACH))} {<Id.Lit_Equals '='>} {(DQ <i386>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {
                                  (DQ <Id.Lit_BadBackslash '\\'> <'tcp /mnt'> (${ Id.VSub_Name SAVEDIR) 
                                    <'/bootenv.rc.'> ($ Id.VSub_DollarName cmd) <.> ($ Id.VSub_DollarName NOW) <' /mnt/boot/solaris/'> 
                                    ($ Id.VSub_DollarName BOOTENV_FILE)
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName RECOVERFILE)}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [718 743]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [618 631]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rootdisk='> name:rootdisk)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {($ Id.VSub_DollarName MOUNT)})
                              (C {($ Id.VSub_DollarName GREP)} {(DQ <'/ on '>)})
                              (C {<cut>} {<-f>} {<3>} {<-d>} {(DQ <' '>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [774]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <'tumount /mnt'> <Id.Lit_BadBackslash '\\'> <n> 
                    <Id.Lit_BadBackslash '\\'> <treboot> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n> (${ Id.VSub_Name rootdisk) <' '> 
                    <Id.Lit_BadBackslash '\\'> <c>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName RECOVERFILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [
                {<gettext>}
                {
                  (DQ <'was your root device,'> <Id.Lit_BadBackslash '\\'> 
                    <'nbut it could be named differently after you boot net.'> <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName RECOVERFILE)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: update_sysfiles
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<gettext>} 
              {(DQ <'WARNING: This operation will require a reboot.'> <Id.Lit_BadBackslash '\\'> <n>)}
            )
            (C {<gettext>} {(DQ <'Do you want to continue ? [y/n] (default: y) '>)})
            (C {<read>} {<response>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName response))} 
                              {<-a>} {(DQ ($ Id.VSub_DollarName response))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <y>)} {<-a>} 
                              {(DQ ($ Id.VSub_DollarName response))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <Y>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: 
                        (command.ForEach
                          iter_names: [d]
                          iterable: (for_iter.Words words:[{($ Id.VSub_DollarName DRVLIST)}])
                          body: 
                            (command.DoGroup
                              children: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'TMPDRVCONF='>
                                          name: TMPDRVCONF
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {<'/var/run/tmp.'> ($ Id.VSub_DollarName d) <.conf.> 
                                          ($ Id.VSub_Dollar '$')
                                        }
                                      spids: [955]
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.Simple
                                  words: [
                                    {($ Id.VSub_DollarName RM)}
                                    {<-f>}
                                    {($ Id.VSub_DollarName TMPDRVCONF)}
                                  ]
                                  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: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [899 940]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'need_bootscript='>
                      name: need_bootscript
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {($ Id.VSub_DollarName SUPPORTED_DRIVERS)})
                              (C {($ Id.VSub_DollarName AWK)} {<-F> (DQ <'|'>)} {(SQ <'{print NF}'>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [998]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName cmd))} 
                              {<Id.Lit_Equals '='>} {(DQ <enable>)} {<-o>} {(DQ ($ Id.VSub_DollarName cmd))} {<Id.Lit_Equals '='>} {(DQ <disable>)} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ForEach
                      iter_names: [d]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName DRVLIST)}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'DRVCONF='>
                                      name: DRVCONF
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName d) <.conf>}
                                  spids: [1065]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'KDRVCONF='>
                                      name: KDRVCONF
                                    )
                                  op: assign_op.Equal
                                  rhs: {<'/kernel/drv/'> ($ Id.VSub_DollarName d) <.conf>}
                                  spids: [1070]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'TMPDRVCONF='>
                                      name: TMPDRVCONF
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {<'/var/run/tmp.'> ($ Id.VSub_DollarName d) <.conf.> 
                                      ($ Id.VSub_Dollar '$')
                                    }
                                  spids: [1076]
                                )
                              ]
                              redirects: []
                            )
                            (C {($ Id.VSub_DollarName CP)} {($ Id.VSub_DollarName KDRVCONF)} 
                              {($ Id.VSub_DollarName SAVEDIR) <'/'> 
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: (C {<basename>} {($ Id.VSub_DollarName KDRVCONF)})
                                  right: <Id.Backtick_Right '`'>
                                ) <.> ($ Id.VSub_DollarName cmd) <.> ($ Id.VSub_DollarName NOW)
                              }
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-f>} 
                                              {($ Id.VSub_DollarName TMPDRVCONF)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {($ Id.VSub_DollarName CP)} {($ Id.VSub_DollarName TMPDRVCONF)} 
                                      {($ Id.VSub_DollarName KDRVCONF)}
                                    )
                                    (C {($ Id.VSub_DollarName RM)} {<-f>} 
                                      {($ Id.VSub_DollarName TMPDRVCONF)}
                                    )
                                  ]
                                  spids: [1103 1114]
                                )
                              ]
                              else_action: [
                                (command.Sentence
                                  child: 
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Continue continue>
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                              redirects: []
                            )
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'CLIENT_TYPE_PHCI='>
                                          name: CLIENT_TYPE_PHCI
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (command_sub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (C {($ Id.VSub_DollarName STMSBOOTUTIL)} {<-D>} 
                                                {($ Id.VSub_DollarName d)} {<-N>}
                                              )
                                            right: <Id.Backtick_Right '`'>
                                          )
                                        }
                                      spids: [1200]
                                    )
                                  ]
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-z>} 
                                              {(DQ ($ Id.VSub_DollarName CLIENT_TYPE_PHCI))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Sentence
                                      child: 
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Continue continue>
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  spids: [1216 1229]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName cmd))} 
                                              {<Id.Lit_Equals '='>} {(DQ <enable>)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          words: [
                                            {($ Id.VSub_DollarName LS)}
                                            {<-l>}
                                            {<'/dev/dsk/'> <Id.Lit_Star '*'> <s2>}
                                          ]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_Great '2>'>
                                              loc: (redir_loc.Fd fd:2)
                                              arg: {<'/dev/null'>}
                                            )
                                          ]
                                          more_env: []
                                          do_fork: T
                                        )
                                        (C {($ Id.VSub_DollarName EGREP)} {<-s>} 
                                          {(DQ ($ Id.VSub_DollarName CLIENT_TYPE_PHCI))}
                                        )
                                      ]
                                      negated: F
                                      stderr_indices: []
                                    )
                                  ]
                                  spids: [1240 1257]
                                )
                              ]
                              else_action: [
                                (command.Pipeline
                                  children: [
                                    (command.Simple
                                      words: [
                                        {($ Id.VSub_DollarName LS)}
                                        {<-l>}
                                        {<'/dev/dsk/'> <Id.Lit_Star '*'> <s2>}
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_Great '2>'>
                                          loc: (redir_loc.Fd fd:2)
                                          arg: {<'/dev/null'>}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                    (C {($ Id.VSub_DollarName EGREP)} {<-s>} 
                                      {(DQ ($ Id.VSub_DollarName CLIENT_TYPE_VHCI))}
                                    )
                                  ]
                                  negated: F
                                  stderr_indices: []
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} 
                                              {<0>} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'need_bootscript='>
                                              name: need_bootscript
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (C {($ Id.VSub_DollarName EXPR)} 
                                                    {($ Id.VSub_DollarName need_bootscript)} {<->} {<1>}
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                          spids: [1333]
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [1317 1330]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  spids: [1020 1049]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName need_bootscript)} {<-gt>} 
                              {<0>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'need_bootscript='>
                              name: need_bootscript
                            )
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [1373]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                      {(DQ ($ Id.VSub_DollarName new_bootpath))} {<-a>} {(DQ ($ Id.VSub_DollarName MACH))} {<Id.Lit_Equals '='>} {(DQ <i386>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {($ Id.VSub_DollarName CP)} 
                              {<'/boot/solaris/'> ($ Id.VSub_DollarName BOOTENV_FILE)} 
                              {($ Id.VSub_DollarName SAVEDIR) <'/'> 
                                ($ Id.VSub_DollarName BOOTENV_FILE) <.> ($ Id.VSub_DollarName cmd) <.> ($ Id.VSub_DollarName NOW)
                              }
                            )
                            (C {($ Id.VSub_DollarName EEPROM)} 
                              {<Id.Lit_VarLike 'bootpath='> (DQ ($ Id.VSub_DollarName new_bootpath))}
                            )
                          ]
                          spids: [1377 1402]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MACH))} 
                                      {<Id.Lit_Equals '='>} {(DQ <i386>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'HASZFSROOT='>
                                      name: HASZFSROOT
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {($ Id.VSub_DollarName DF)} {<-g>} {<'/'>})
                                              (C {($ Id.VSub_DollarName GREP)} {<zfs>})
                                            ]
                                            negated: F
                                            stderr_indices: []
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [1459]
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                                              {(DQ ($ Id.VSub_DollarName HASZFSROOT))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Simple
                                      words: [
                                        {($ Id.VSub_DollarName SVCCFG)}
                                        {<-s>}
                                        {($ Id.VSub_DollarName FASTBOOTINSTANCE)}
                                        {<addpg>}
                                        {<config_ovr>}
                                        {<application>}
                                        {<P>}
                                      ]
                                      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 {($ Id.VSub_DollarName SVCCFG)} {<-s>} 
                                      {($ Id.VSub_DollarName FASTBOOTINSTANCE)} {<setprop>} 
                                      {<'config_ovr/fastreboot_default'> <Id.Lit_Equals '='> <boolean> 
                                        <Id.Lit_Colon ':'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <false> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\"'>
                                          ch: '"'
                                        )
                                      }
                                    )
                                    (C {($ Id.VSub_DollarName SVCCFG)} {<-s>} 
                                      {($ Id.VSub_DollarName FASTBOOTINSTANCE)} {<setprop>} 
                                      {<'config_ovr/fastreboot_onpanic'> <Id.Lit_Equals '='> <boolean> 
                                        <Id.Lit_Colon ':'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <false> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\"'>
                                          ch: '"'
                                        )
                                      }
                                    )
                                    (C {($ Id.VSub_DollarName SVCADM)} {<refresh>} 
                                      {($ Id.VSub_DollarName FASTBOOTINSTANCE)}
                                    )
                                  ]
                                  spids: [1476 1489]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                          spids: [1435 1452]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {($ Id.VSub_DollarName SVCADM)} {<disable>} {<-t>} 
                      {($ Id.VSub_DollarName STMSINSTANCE)}
                    )
                    (C {($ Id.VSub_DollarName SVCCFG)} {<-s>} {($ Id.VSub_DollarName STMSINSTANCE)} 
                      {(DQ <'setprop general/enabled=true'>)}
                    )
                  ]
                  spids: [1357 1370]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'need_bootscript='>
                          name: need_bootscript
                        )
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [1594]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (C {<build_recover>} {($ Id.VSub_DollarName need_bootscript)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MACH))} 
                              {<Id.Lit_Equals '='>} {(DQ <i386>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {($ Id.VSub_DollarName BOOTADM)} {<update-archive>})]
                  spids: [1608 1625]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<gettext>} 
              {
                (DQ <'The changes will come into effect after rebooting the system.'> 
                  <Id.Lit_BadBackslash '\\'> <'nReboot the system now ? [y/n] (default: y) '>
                )
              }
            )
            (C {<read>} {<response>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName response))} 
                              {<-o>} {(DQ ($ Id.VSub_DollarName response))} {<Id.Lit_Equals '='>} {(DQ <y>)} {<-o>} 
                              {(DQ ($ Id.VSub_DollarName response))} {<Id.Lit_Equals '='>} {(DQ <Y>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {($ Id.VSub_DollarName REBOOT)})]
                  spids: [1652 1691]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: configure_mpxio
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mpxiodisableno='> name:mpxiodisableno)
                  op: assign_op.Equal
                  rhs: {(SQ <'mpxio-disable[ \t]*=[ \t]*"no"[ \t]*;'>)}
                  spids: [1751]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'mpxiodisableyes='>
                      name: mpxiodisableyes
                    )
                  op: assign_op.Equal
                  rhs: {(SQ <'mpxio-disable[ \t]*=[ \t]*"yes"[ \t]*;'>)}
                  spids: [1757]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'satadisableno='> name:satadisableno)
                  op: assign_op.Equal
                  rhs: {(SQ <'disable-sata-mpxio[ \t]*=[ \t]*"no"[ \t]*;'>)}
                  spids: [1763]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'satadisableyes='> name:satadisableyes)
                  op: assign_op.Equal
                  rhs: {(SQ <'disable-sata-mpxio[ \t]*=[ \t]*"yes"[ \t]*;'>)}
                  spids: [1769]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName cmd))} 
                              {<Id.Lit_Equals '='>} {(DQ <enable>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'mpxiodisable_cur_entry='>
                              name: mpxiodisable_cur_entry
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName mpxiodisableyes)}
                          spids: [1796]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'satadisable_cur_entry='>
                              name: satadisable_cur_entry
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName satadisableyes)}
                          spids: [1800]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'propval='> name:propval)
                          op: assign_op.Equal
                          rhs: {<no>}
                          spids: [1804]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msg='> name:msg)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<gettext>} {(DQ <'STMS already enabled'>)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [1808]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1776 1793]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'mpxiodisable_cur_entry='>
                          name: mpxiodisable_cur_entry
                        )
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName mpxiodisableno)}
                      spids: [1823]
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'satadisable_cur_entry='>
                          name: satadisable_cur_entry
                        )
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName satadisableno)}
                      spids: [1827]
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'propval='> name:propval)
                      op: assign_op.Equal
                      rhs: {<yes>}
                      spids: [1831]
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msg='> name:msg)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: (C {<gettext>} {(DQ <'STMS already disabled'>)})
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                      spids: [1835]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DRVCONF='> name:DRVCONF)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName d) <.conf>}
                  spids: [1851]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KDRVCONF='> name:KDRVCONF)
                  op: assign_op.Equal
                  rhs: {<'/kernel/drv/'> ($ Id.VSub_DollarName d) <.conf>}
                  spids: [1856]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TMPDRVCONF='> name:TMPDRVCONF)
                  op: assign_op.Equal
                  rhs: {<'/var/run/tmp.'> ($ Id.VSub_DollarName d) <.conf.> ($ Id.VSub_Dollar '$')}
                  spids: [1862]
                )
              ]
              redirects: []
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'TMPDRVCONF_MPXIO_ENTRY='>
                          name: TMPDRVCONF_MPXIO_ENTRY
                        )
                      op: assign_op.Equal
                      rhs: 
                        {<'/var/run/tmp.'> ($ Id.VSub_DollarName d) <.conf.mpxioentry.> 
                          ($ Id.VSub_Dollar '$')
                        }
                      spids: [1869]
                    )
                  ]
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'TMPDRVCONF_SATA_ENTRY='>
                          name: TMPDRVCONF_SATA_ENTRY
                        )
                      op: assign_op.Equal
                      rhs: 
                        {<'/var/run/tmp.'> ($ Id.VSub_DollarName d) <.conf.sataentry.> 
                          ($ Id.VSub_Dollar '$')
                        }
                      spids: [1877]
                    )
                  ]
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<delete_mpxio_disable_entries>} {($ Id.VSub_DollarName KDRVCONF)} 
                              {($ Id.VSub_DollarName TMPDRVCONF)} {($ Id.VSub_DollarName TMPDRVCONF_MPXIO_ENTRY)} {($ Id.VSub_DollarName TMPDRVCONF_SATA_ENTRY)}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-s>} 
                                      {($ Id.VSub_DollarName TMPDRVCONF_MPXIO_ENTRY)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {($ Id.VSub_DollarName EGREP)} {<-s>} 
                              {(DQ ($ Id.VSub_DollarName mpxiodisable_cur_entry))} {($ Id.VSub_DollarName TMPDRVCONF_MPXIO_ENTRY)}
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} 
                                              {<0>} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'reboot_needed='>
                                              name: reboot_needed
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (C {($ Id.VSub_DollarName EXPR)} 
                                                    {($ Id.VSub_DollarName reboot_needed)} {<Id.Lit_Other '+'>} {<1>}
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                          spids: [1948]
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [1932 1945]
                                )
                              ]
                              else_action: [
                                (C {($ Id.VSub_DollarName EGREP)} {<-s>} 
                                  {(DQ ($ Id.VSub_DollarName satadisable_cur_entry))} {($ Id.VSub_DollarName TMPDRVCONF_SATA_ENTRY)}
                                )
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} 
                                                  {<-eq>} {<0>} {<-a>} {(DQ ($ Id.VSub_DollarName d))} {<Id.Lit_Equals '='>} {(DQ <mpt>)} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'reboot_needed='>
                                                  name: reboot_needed
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (command_sub
                                                    left_token: <Id.Left_Backtick '`'>
                                                    child: 
                                                      (C {($ Id.VSub_DollarName EXPR)} 
                                                        {($ Id.VSub_DollarName reboot_needed)} {<Id.Lit_Other '+'>} {<1>}
                                                      )
                                                    right: <Id.Backtick_Right '`'>
                                                  )
                                                }
                                              spids: [2012]
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      spids: [1984 2009]
                                    )
                                  ]
                                  else_action: [
                                    (command.Simple
                                      words: [
                                        {($ Id.VSub_DollarName RM)}
                                        {<-f>}
                                        {($ Id.VSub_DollarName TMPDRVCONF)}
                                        {($ Id.VSub_DollarName TMPDRVCONF_MPXIO_ENTRY)}
                                        {($ Id.VSub_DollarName TMPDRVCONF_SATA_ENTRY)}
                                      ]
                                      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.Sentence
                                      child: 
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Return return>
                                          arg_word: {<0>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1903 1914]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [1886 1899]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {($ Id.VSub_DollarName RM)}
                    {<-f>}
                    {($ Id.VSub_DollarName TMPDRVCONF)}
                    {($ Id.VSub_DollarName TMPDRVCONF_MPXIO_ENTRY)}
                    {($ Id.VSub_DollarName TMPDRVCONF_SATA_ENTRY)}
                  ]
                  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: [{<gettext>} {(DQ <'failed to update '>)}]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  more_env: []
                  do_fork: T
                )
                (command.Simple
                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName KDRVCONF) <.>)}]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  more_env: []
                  do_fork: T
                )
                (command.Simple
                  words: [
                    {<gettext>}
                    {
                      (DQ <'No changes were made to your STMS configuration.'> 
                        <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  more_env: []
                  do_fork: T
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<rm>}
                {($ Id.VSub_DollarName TMPDRVCONF_MPXIO_ENTRY)}
                {($ Id.VSub_DollarName TMPDRVCONF_SATA_ENTRY)}
              ]
              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: [
                {<echo>}
                {
                  (DQ <'mpxio-disable='> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) (${ Id.VSub_Name propval) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <';'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName TMPDRVCONF)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName d))} 
                              {<Id.Lit_Equals '='>} {(DQ <mpt>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <'disable-sata-mpxio='> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                              ch: '"'
                            ) (${ Id.VSub_Name propval) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <';'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName TMPDRVCONF)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [2162 2179]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: setcmd
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName cmd))} 
                              {<Id.Lit_Equals '='>} {(DQ <none>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmd='> name:cmd)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                          spids: [2232]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2212 2229]
                )
              ]
              else_action: [
                (command.Simple
                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName USAGE))}]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  more_env: []
                  do_fork: T
                )
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>})
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_newbootpath_for_stmsdev
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName cmd))} 
                              {<Id.Lit_Equals '='>} {(DQ <enable>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [2285 2302]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cur_bootpath='> name:cur_bootpath)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {($ Id.VSub_DollarName STMSBOOTUTIL)} {<-b>})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2314]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})]
                  spids: [2324 2338]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ONDISKVER='> name:ONDISKVER)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {($ Id.VSub_DollarName AWK)} {(SQ <'/bootpath/ {print $3}'>)} 
                                {<'/boot/solaris/bootenv.rc'>}
                              )
                              (C {($ Id.VSub_DollarName SED)} {<-e> (DQ <'s,\',,g'>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2367]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ONDISKVER))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName cur_bootpath))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'cur_bootpath='>
                              name: cur_bootpath
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName ONDISKVER))}
                          spids: [2414]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2393 2411]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NEWBOOTPATH='> name:NEWBOOTPATH)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [2424]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [path]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName cur_bootpath)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mapped='> name:mapped)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (C {($ Id.VSub_DollarName STMSBOOTUTIL)} {<-p>} 
                                    {($ Id.VSub_DollarName path)}
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [2441]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName mapped))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <NOT_MAPPED>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ ($ Id.VSub_DollarName mapped))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName path))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'NEWBOOTPATH='>
                                              name: NEWBOOTPATH
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {<echo>} 
                                                        {(DQ ($ Id.VSub_DollarName path) <' '>)}
                                                      )
                                                      (C {($ Id.VSub_DollarName SED)} 
                                                        {<-e> 
                                                          (DQ <'s|'> ($ Id.VSub_DollarName path) <'|'> 
                                                            ($ Id.VSub_DollarName mapped) <'|'>
                                                          )
                                                        }
                                                      )
                                                    ]
                                                    negated: F
                                                    stderr_indices: []
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              ) (DQ <' '> ($ Id.VSub_DollarName NEWBOOTPATH))
                                            }
                                          spids: [2495]
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [2474 2492]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'NEWBOOTPATH='>
                                          name: NEWBOOTPATH
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ ($ Id.VSub_DollarName NEWBOOTPATH) <' '> 
                                            ($ Id.VSub_DollarName path)
                                          )
                                        }
                                      spids: [2533]
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2453 2471]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'new_bootpath='> name:new_bootpath)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<echo>} {($ Id.VSub_DollarName NEWBOOTPATH)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [2554]
                )
              ]
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: emit_driver_warning_msg
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<echo>} {(DQ )})
            (C {<gettext>} 
              {
                (DQ <'WARNING: stmsboot operates on each supported multipath-capable controller'> 
                  <Id.Lit_BadBackslash '\\'> <n>
                )
              }
            )
            (C {<gettext>} 
              {
                (DQ <'         detected in a host. In your system, these controllers are'> 
                  <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                )
              }
            )
            (command.Sentence
              child: 
                (command.ForEach
                  iter_names: [WARNDRV]
                  iterable: 
                    (for_iter.Words
                      words: [
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Pipeline
                                children: [
                                  (C {<echo>} {($ Id.VSub_DollarName SUPPORTED_DRIVERS)})
                                  (C {($ Id.VSub_DollarName SED)} {<-e> (DQ <'s,|, ,g'>)})
                                ]
                                negated: F
                                stderr_indices: []
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                      ]
                    )
                  body: 
                    (command.DoGroup
                      children: [
                        (C {($ Id.VSub_DollarName STMSBOOTUTIL)} {<-D>} {($ Id.VSub_DollarName WARNDRV)} 
                          {<-n>}
                        )
                      ]
                    )
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<echo>} {(DQ )})
            (C {<gettext>} 
              {
                (DQ <'If you do NOT wish to operate on these controllers, please quit stmsboot'> 
                  <Id.Lit_BadBackslash '\\'> <n>
                )
              }
            )
            (C {<gettext>} 
              {
                (DQ 
                  <
'and re-invoke with -D { fp | mpt | mpt_sas | pmcs} to specify which controllers you wish'
                  > <Id.Lit_BadBackslash '\\'> <n>
                )
              }
            )
            (C {<gettext>} 
              {(DQ <'to modify your multipathing configuration for.'> <Id.Lit_BadBackslash '\\'> <n>)}
            )
            (C {<echo>} {(DQ )})
            (C {<gettext>} {(DQ <'Do you wish to continue? [y/n] (default: y) '>)})
            (C {<read>} {<response>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName response))} 
                              {<-a>} {(DQ ($ Id.VSub_DollarName response))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <Y>)} {<-a>} 
                              {(DQ ($ Id.VSub_DollarName response))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <y>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit>)]
                  spids: [2735 2776]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmd='> name:cmd)
          op: assign_op.Equal
          rhs: {<none>}
          spids: [2801]
        )
      ]
      redirects: []
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [(C {<getopts>} {<D> <Id.Lit_Colon ':'> <geduLl> <Id.Lit_Colon ':'>} {<c>})]
        )
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {($ Id.VSub_DollarName c)}
              arms: [
                (case_arm
                  pat_list: [{<e>}]
                  action: [(C {<setcmd>} {<enable>})]
                  spids: [2828 2829 2834 -1]
                )
                (case_arm
                  pat_list: [{<d>}]
                  action: [(C {<setcmd>} {<disable>})]
                  spids: [2837 2838 2843 -1]
                )
                (case_arm
                  pat_list: [{<u>}]
                  action: [(C {<setcmd>} {<update>})]
                  spids: [2846 2847 2852 -1]
                )
                (case_arm
                  pat_list: [{<L>}]
                  action: [(C {<setcmd>} {<listall>})]
                  spids: [2855 2856 2861 -1]
                )
                (case_arm
                  pat_list: [{<l>}]
                  action: [
                    (C {<setcmd>} {<list>})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'controller='> name:controller)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName OPTARG)}
                          spids: [2872]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2864 2865 2874 -1]
                )
                (case_arm
                  pat_list: [{<D>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DRV='> name:DRV)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName OPTARG)}
                          spids: [2880]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2877 2878 2882 -1]
                )
                (case_arm
                  pat_list: [{<g>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GUID='> name:GUID)
                          op: assign_op.Equal
                          rhs: {(DQ <-g>)}
                          spids: [2888]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2885 2886 2892 -1]
                )
                (case_arm
                  pat_list: [{(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}]
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ ($ Id.VSub_DollarName USAGE))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_GreatAnd '1>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<2>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<2>}
                    )
                  ]
                  spids: [2895 2896 2911 -1]
                )
              ]
              redirects: []
            )
          ]
        )
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName cmd))} {<Id.Lit_Equals '='>} 
                      {(DQ <none>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [{<echo>} {(DQ ($ Id.VSub_DollarName USAGE))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>})
          ]
          spids: [2919 2936]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName DRV))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DRVLIST='> name:DRVLIST)
                  op: assign_op.Equal
                  rhs: {(DQ <'fp mpt mpt_sas pmcs'>)}
                  spids: [2972]
                )
              ]
              redirects: []
            )
          ]
          spids: [2956 2969]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DRVLIST='> name:DRVLIST)
              op: assign_op.Equal
              rhs: {($ Id.VSub_DollarName DRV)}
              spids: [2980]
            )
          ]
          redirects: []
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USERID='> name:USERID)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [(C {<id>}) (C {($ Id.VSub_DollarName EGREP)} {(DQ <'uid=0'>)})]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [2986]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName USERID))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<gettext>}
                {(DQ <'You must be super-user to run this script.'> <Id.Lit_BadBackslash '\\'> <n>)}
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [3001 3014]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} 
                      {($ Id.VSub_DollarName STMSBOOTUTIL)} {<-o>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName STMSMETHODSCRIPT)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fmt='> name:fmt)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<gettext>} {(DQ <'Can\'t find %s and/or %s'>)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [3063]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<printf>}
                {(DQ ($ Id.VSub_DollarName fmt) <Id.Lit_BadBackslash '\\'> <n>)}
                {(DQ ($ Id.VSub_DollarName STMSBOOTUTIL))}
                {(DQ ($ Id.VSub_DollarName STMSMETHODSCRIPT))}
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [3039 3060]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.Simple
      words: [{($ Id.VSub_DollarName SVCCFG)} {<-s>} {(DQ <'platform/sun4u/mpxio-upgrade:default'>)}]
      redirects: [
        (redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<'/dev/null'>})
        (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: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName SVCCFG)}
                {<delete>}
                {(DQ <'platform/sun4u/mpxio-upgrade:default'>)}
              ]
              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
            )
          ]
          spids: [3124 3137]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.Simple
      words: [{($ Id.VSub_DollarName SVCPROP)} {<-q>} {($ Id.VSub_DollarName STMSINSTANCE)}]
      redirects: [
        (redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<'/dev/null'>})
        (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: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} 
                              {<'/lib/svc/manifest/system/device/mpxio-upgrade.xml'>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {($ Id.VSub_DollarName SVCCFG)} {<Id.KW_Import import>} 
                      {<'/lib/svc/manifest/system/device/mpxio-upgrade.xml'>}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fmt='> name:fmt)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<gettext>} {(DQ <'Unable to import the %s service'>)})
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [3232]
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              words: [
                                {<printf>}
                                {(DQ ($ Id.VSub_DollarName fmt) <Id.Lit_BadBackslash '\\'> <n>)}
                                {(DQ ($ Id.VSub_DollarName STMSINSTANCE))}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '1>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [3215 3228]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fmt='> name:fmt)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (C {<gettext>} 
                                        {(DQ <'Service %s imported successfully, continuing'>)}
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                              spids: [3268]
                            )
                          ]
                          redirects: []
                        )
                        (command.Simple
                          words: [
                            {<printf>}
                            {(DQ ($ Id.VSub_DollarName fmt) <Id.Lit_BadBackslash '\\'> <n>)}
                            {(DQ ($ Id.VSub_DollarName STMSINSTANCE))}
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3194 3205]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fmt='> name:fmt)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: (C {<gettext>} {(DQ <'Service %s does not exist on this host'>)})
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                      spids: [3302]
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  words: [
                    {<printf>}
                    {(DQ ($ Id.VSub_DollarName fmt) <Id.Lit_BadBackslash '\\'> <n>)}
                    {(DQ ($ Id.VSub_DollarName STMSINSTANCE))}
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> 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: [3178 3191]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {($ Id.VSub_DollarName SAVEDIR)} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {($ Id.VSub_DollarName MKDIR)} {<-p>} {($ Id.VSub_DollarName SAVEDIR)})]
          spids: [3344 3357]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {($ Id.VSub_DollarName STMSBOOTUTIL)} {<-i>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName cmd))} {<Id.Lit_Equals '='>} 
                      {(DQ <enable>)} {<-o>} {(DQ ($ Id.VSub_DollarName cmd))} {<Id.Lit_Equals '='>} {(DQ <disable>)} {<-o>} 
                      {(DQ ($ Id.VSub_DollarName cmd))} {<Id.Lit_Equals '='>} {(DQ <update>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (C {($ Id.VSub_DollarName MOUNT)} {<-v>})
                                (C {($ Id.VSub_DollarName EGREP)} {<-s>} {(DQ <' on / type nfs '>)})
                              ]
                              negated: F
                              stderr_indices: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<gettext>}
                        {
                          (DQ 
                            <
'This command option is not supported on systems with an nfs mounted root filesystem.'
                            > <Id.Lit_BadBackslash '\\'> <n>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_GreatAnd '1>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<2>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3421 3438]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ISARMED='> name:ISARMED)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {($ Id.VSub_DollarName SVCS)} {<-l>} 
                                {($ Id.VSub_DollarName STMSINSTANCE)}
                              )
                              (C {($ Id.VSub_DollarName GREP)} {(DQ <'enabled.*false.*temporary'>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [3483]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {($ Id.VSub_QMark '?')} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} {(DQ )})
                    (C {<gettext>} 
                      {
                        (DQ <'You need to reboot the system in order to complete'> 
                          <Id.Lit_BadBackslash '\\'> <n>
                        )
                      }
                    )
                    (C {<gettext>} 
                      {(DQ <'the previous invocation of stmsboot.'> <Id.Lit_BadBackslash '\\'> <n>)}
                    )
                    (C {<echo>} {(DQ )})
                    (C {<gettext>} {(DQ <'Do you wish to reboot the system now? (y/n, default y) '>)})
                    (C {<read>} {<response>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-z>} 
                                      {(DQ ($ Id.VSub_DollarName response))} {<-o>} {(DQ <x> ($ Id.VSub_DollarName response))} {<Id.Lit_Equals '='>} {(DQ <Y>)} {<-o>} 
                                      {(DQ ($ Id.VSub_DollarName response))} {<Id.Lit_Equals '='>} {(DQ <y>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {($ Id.VSub_DollarName REBOOT)})]
                          spids: [3558 3598]
                        )
                      ]
                      else_action: [
                        (C {<echo>} {(DQ )})
                        (C {<gettext>} 
                          {
                            (DQ <'Please reboot this system before continuing'> 
                              <Id.Lit_BadBackslash '\\'> <n>
                            )
                          }
                        )
                        (C {<echo>} {(DQ )})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Exit exit>
                          arg_word: {<1>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3501 3512]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ForEach
              iter_names: [d]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName DRVLIST)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DRVCONF='> name:DRVCONF)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName d) <.conf>}
                          spids: [3668]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KDRVCONF='> name:KDRVCONF)
                          op: assign_op.Equal
                          rhs: {<'/kernel/drv/'> ($ Id.VSub_DollarName d) <.conf>}
                          spids: [3673]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TMPDRVCONF='> name:TMPDRVCONF)
                          op: assign_op.Equal
                          rhs: 
                            {<'/var/run/tmp.'> ($ Id.VSub_DollarName d) <.conf.> ($ Id.VSub_Dollar '$')}
                          spids: [3679]
                        )
                      ]
                      redirects: []
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'TMPDRVCONF_MPXIO_ENTRY='>
                                  name: TMPDRVCONF_MPXIO_ENTRY
                                )
                              op: assign_op.Equal
                              rhs: 
                                {<'/var/run/tmp.'> ($ Id.VSub_DollarName d) <.conf.mpxioentry.> 
                                  ($ Id.VSub_Dollar '$')
                                }
                              spids: [3686]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MACH))} 
                                      {<Id.Lit_Equals '='>} {(DQ <sparc>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<backup_lastsaved>} {($ Id.VSub_DollarName KDRVCONF)} 
                              {($ Id.VSub_DollarName VFSTAB)}
                            )
                          ]
                          spids: [3694 3711]
                        )
                      ]
                      else_action: [
                        (C {<backup_lastsaved>} {($ Id.VSub_DollarName KDRVCONF)} 
                          {($ Id.VSub_DollarName VFSTAB)} {<'/boot/solaris/'> ($ Id.VSub_DollarName BOOTENV_FILE)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          spids: [3377 3418]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName cmd))} {<Id.Lit_Equals '='>} 
                      {(DQ <enable>)} {<-o>} {(DQ ($ Id.VSub_DollarName cmd))} {<Id.Lit_Equals '='>} {(DQ <disable>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgneeded='> name:msgneeded)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ ($ Id.VSub_DollarName DRVLIST))})
                              (C {($ Id.VSub_DollarName GREP)} {(DQ <' '>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [3775]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName msgneeded))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<emit_driver_warning_msg>})]
                  spids: [3794 3807]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ForEach
              iter_names: [d]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName DRVLIST)}])
              body: 
                (command.DoGroup
                  children: [
                    (C {<configure_mpxio>} {($ Id.VSub_DollarName cmd)} {($ Id.VSub_DollarName d)})
                  ]
                )
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName reboot_needed)} {<-ne>} 
                              {<0>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName cmd))} 
                                      {<Id.Lit_Equals '='>} {(DQ <disable>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ ($ Id.VSub_DollarName MACH))} {<Id.Lit_Equals '='>} {(DQ <i386>)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<get_newbootpath_for_stmsdev>})
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} 
                                                      {<-ne>} {<0>} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.Simple
                                              words: [
                                                {($ Id.VSub_DollarName RM)}
                                                {<-f>}
                                                {($ Id.VSub_DollarName TMPDRVCONF)}
                                              ]
                                              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: [
                                                {<gettext>}
                                                {
                                                  (DQ <'failed to update bootpath.'> 
                                                    <Id.Lit_BadBackslash '\\'> <n>
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_GreatAnd '1>&'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {<2>}
                                                )
                                              ]
                                              more_env: []
                                              do_fork: T
                                            )
                                            (command.Simple
                                              words: [
                                                {<gettext>}
                                                {
                                                  (DQ 
                                                    <
'No changes were made to your STMS configuration.'
                                                    > <Id.Lit_BadBackslash '\\'> <n>
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_GreatAnd '1>&'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {<2>}
                                                )
                                              ]
                                              more_env: []
                                              do_fork: T
                                            )
                                            (command.ControlFlow
                                              token: <Id.ControlFlow_Return return>
                                              arg_word: {<1>}
                                            )
                                          ]
                                          spids: [3920 3933]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                  spids: [3897 3914]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'HASZFSROOT='>
                                      name: HASZFSROOT
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {($ Id.VSub_DollarName DF)} {<-g>} {<'/'>})
                                              (C {($ Id.VSub_DollarName GREP)} {<zfs>})
                                            ]
                                            negated: F
                                            stderr_indices: []
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [4001]
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-z>} 
                                              {(DQ ($ Id.VSub_DollarName HASZFSROOT))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'ROOTSCSIVHCI='>
                                              name: ROOTSCSIVHCI
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {($ Id.VSub_DollarName DF)} {<'/'>})
                                                      (C {($ Id.VSub_DollarName AWK)} {<-F> (DQ <':'>)} 
                                                        {(SQ <'{print $1}'>)}
                                                      )
                                                      (C {($ Id.VSub_DollarName AWK)} {<-F> (DQ <'('>)} 
                                                        {(SQ <'{print $2}'>)}
                                                      )
                                                      (C {($ Id.VSub_DollarName SED)} 
                                                        {<-e> (DQ <'s,),,'>)}
                                                      )
                                                    ]
                                                    negated: F
                                                    stderr_indices: []
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                          spids: [4034]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'TMPROOTDEV='>
                                              name: TMPROOTDEV
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {($ Id.VSub_DollarName LS)} {<-l>} 
                                                        {($ Id.VSub_DollarName ROOTSCSIVHCI)}
                                                      )
                                                      (C {($ Id.VSub_DollarName AWK)} {<-F> (DQ <'>'>)} 
                                                        {(SQ <'{print $2}'>)}
                                                      )
                                                      (C {($ Id.VSub_DollarName SED)} 
                                                        {<-e> (DQ <'s, ../../devices,,'>)}
                                                      )
                                                    ]
                                                    negated: F
                                                    stderr_indices: []
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                          spids: [4081]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.Simple
                                      words: [
                                        {($ Id.VSub_DollarName STMSBOOTUTIL)}
                                        {<-q>}
                                        {($ Id.VSub_DollarName TMPROOTDEV)}
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {($ Id.VSub_DollarName BOOTDEVICES)}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [4018 4031]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                          spids: [3877 3894]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<update_sysfiles>})
                  ]
                  spids: [3839 3852]
                )
              ]
              else_action: [
                (C {<echo>} 
                  {
                    (DQ <'STMS is already '> (${ Id.VSub_Name cmd) <'d. No changes or reboots needed'>)
                  }
                )
              ]
              redirects: []
            )
          ]
          spids: [3742 3771]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName cmd))} {<Id.Lit_Equals '='>} 
                      {(DQ <update>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MACH))} 
                              {<Id.Lit_Equals '='>} {(DQ <i386>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<get_newbootpath_for_stmsdev>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [
                                {<gettext>}
                                {(DQ <'failed to update bootpath.'> <Id.Lit_BadBackslash '\\'> <n>)}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '1>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [4212 4225]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [4177 4194]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<update_sysfiles>})
          ]
          spids: [4157 4174]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName cmd))} {<Id.Lit_Equals '='>} 
                      {(DQ <list>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {($ Id.VSub_DollarName STMSBOOTUTIL)} {($ Id.VSub_DollarName GUID)} {<-l>} 
              {($ Id.VSub_DollarName controller)}
            )
          ]
          spids: [4254 4271]
        )
      ]
      else_action: [(C {($ Id.VSub_DollarName STMSBOOTUTIL)} {($ Id.VSub_DollarName GUID)} {<-L>})]
      redirects: []
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{($ Id.VSub_QMark '?')})
  ]
)