(command.CommandList
  children: [
    (command.ShFunction
      name: msg_init
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: (C {<basename>} {($ Id.VSub_Number 0)})
                                  right: <Id.Backtick_Right '`'>
                                )
                              } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} 
                              {
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: (C {<basename>} {($ Id.VSub_Number 0)} {<.windowing>})
                                  right: <Id.Backtick_Right '`'>
                                )
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WINDOWING='> name:WINDOWING)
                          op: assign_op.Equal
                          rhs: {(DQ <yes>)}
                          spids: [252]
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName VOLUME_MEDIATYPE)}
                      arms: [
                        (case_arm
                          pat_list: [{<cdrom>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TITLE='> name:TITLE)
                                  op: assign_op.Equal
                                  rhs: {(DQ <CD-ROM>)}
                                  spids: [268]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [265 266 272 -1]
                        )
                        (case_arm
                          pat_list: [{<rmdisk>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TITLE='> name:TITLE)
                                  op: assign_op.Equal
                                  rhs: {(DQ <'Removable Disk'>)}
                                  spids: [278]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [275 276 282 -1]
                        )
                        (case_arm
                          pat_list: [{<floppy>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TITLE='> name:TITLE)
                                  op: assign_op.Equal
                                  rhs: {(DQ <Floppy>)}
                                  spids: [288]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [285 286 292 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TITLE='> name:TITLE)
                                  op: assign_op.Equal
                                  rhs: {(DQ <Disk>)}
                                  spids: [298]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [295 296 302 -1]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MODE))} 
                                      {<Id.Lit_Equals '='>} {(DQ <allocate>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TITLE='> name:TITLE)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName TITLE) <' Allocation'>)}
                                  spids: [330]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [310 327]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TITLE='> name:TITLE)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_DollarName TITLE) <' Deallocation'>)}
                              spids: [340]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [221 249]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WINDOWING='> name:WINDOWING)
                      op: assign_op.Equal
                      rhs: {(DQ <no>)}
                      spids: [353]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: msg
      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 WINDOWING))} 
                              {<Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {($ Id.VSub_DollarName WDWMSG)} {(DQ ($ Id.VSub_Star '*'))} 
                      {(DQ ($ Id.VSub_DollarName TITLE))} {<OK>}
                    )
                  ]
                  spids: [383 400]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName silent))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <y>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ ($ Id.VSub_Star '*'))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/'> (${ Id.VSub_Name MSGDEV)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [416 434]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: ok_msg
      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 WINDOWING))} 
                              {<Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {($ Id.VSub_DollarName WDWMSG)} {(DQ ($ Id.VSub_Star '*'))} 
                      {(DQ ($ Id.VSub_DollarName TITLE))} {<READY>}
                    )
                  ]
                  spids: [463 480]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'form='> name:form)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: (C {<gettext>} {(DQ <'Media in %s is ready. Please store safely.'>)})
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                      spids: [499]
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  words: [
                    {<printf>}
                    {(DQ (${ Id.VSub_Name form) <Id.Lit_BadBackslash '\\'> <n>)}
                    {($ Id.VSub_DollarName PROG)}
                    {($ Id.VSub_DollarName DEVICE)}
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/'> <Id.Lit_LBrace '{'> <MSGDEV> <Id.Lit_RBrace '}'>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: error_msg
      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 WINDOWING))} 
                              {<Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {($ Id.VSub_DollarName WDWMSG)} {(DQ ($ Id.VSub_Star '*'))} 
                      {(DQ ($ Id.VSub_DollarName TITLE))} {<ERROR>}
                    )
                  ]
                  spids: [545 562]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'form='> name:form)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: (C {<gettext>} {(DQ <'%s: Error cleaning up device %s.'>)})
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                      spids: [581]
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  words: [
                    {<printf>}
                    {(DQ (${ Id.VSub_Name form) <Id.Lit_BadBackslash '\\'> <n>)}
                    {($ Id.VSub_DollarName PROG)}
                    {($ Id.VSub_DollarName DEVICE)}
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/'> (${ Id.VSub_Name MSGDEV)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: okcancel
      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 WINDOWING))} 
                              {<Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {($ Id.VSub_DollarName WDWMSG)} {(DQ ($ Id.VSub_Star '*'))} 
                      {(DQ ($ Id.VSub_DollarName TITLE))} {<OK>} {<Cancel>}
                    )
                  ]
                  spids: [636 653]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName silent))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <y>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<get_reply>} 
                      {
                        (DQ ($ Id.VSub_Star '*') <' (y to continue, n to cancel) '> 
                          <Id.Lit_BadBackslash '\\'> <c>
                        )
                      } {<y>} {<n>}
                    )
                  ]
                  spids: [671 689]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: yesno
      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 WINDOWING))} 
                              {<Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {($ Id.VSub_DollarName WDWMSG)} {(DQ ($ Id.VSub_Star '*'))} 
                      {(DQ ($ Id.VSub_DollarName TITLE))} {<Yes>} {<No>}
                    )
                  ]
                  spids: [727 744]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName silent))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <y>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<get_reply>} 
                      {(DQ ($ Id.VSub_Star '*') <' (y/n) '> <Id.Lit_BadBackslash '\\'> <c>)} {<y>} {<n>}
                    )
                  ]
                  spids: [762 780]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: error_exit
      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 silent))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <y>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<msg>} {(DQ ($ Id.VSub_Number 2))} {(DQ ($ Id.VSub_Number 3))} 
                      {
                        (DQ <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> 
                          <'nDevice has been placed in allocation error state.'>
                        )
                      } {(DQ <Id.Lit_BadBackslash '\\'> <'nPlease inform system administrator.'>)}
                    )
                  ]
                  spids: [818 836]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_reply
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'prompt='> name:prompt)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number 1)}
                      spids: [892]
                    )
                  ]
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<true>})])
              body: 
                (command.DoGroup
                  children: [
                    (command.Simple
                      words: [{<echo>} {($ Id.VSub_DollarName prompt)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/tty'>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (C {<read>} {<reply>})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [921]
                        )
                      ]
                      redirects: []
                    )
                    (command.ForEach
                      iter_names: [choice]
                      iterable: (for_iter.Words words:[{($ Id.VSub_Star '*')}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName choice))} 
                                          {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName reply))} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Return return>
                                      arg_word: {($ Id.VSub_DollarName i)}
                                    )
                                  ]
                                  spids: [937 954]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (command_sub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (C {<expr>} {($ Id.VSub_DollarName i)} 
                                                {<Id.Lit_Other '+'>} {<1>}
                                              )
                                            right: <Id.Backtick_Right '`'>
                                          )
                                        }
                                      spids: [965]
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              redirects: []
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: find_fs
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEVall='> name:DEVall)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<echo>} {($ Id.VSub_DollarName FILES)})
                                (C {<'/usr/bin/tr'>} {(SQ <' '>)} {(SQ <'\\n'>)})
                                (C {<'/usr/bin/sed'>} 
                                  {
                                    (SQ 
                                      <'/^\\/dev\\/dsk\\//!d; s/\\([sp]\\)\\([0-9]*\\)$/ \\1 \\2/;'>
                                    )
                                  }
                                )
                                (C {<'/usr/bin/sort'>} {<-t>} {(SQ <' '>)} {<-k>} 
                                  {<2> <Id.Lit_Comma ','> <2d>} {<-k>} {<3> <Id.Lit_Comma ','> <3n>}
                                )
                                (C {<'/usr/bin/tr'>} {<-d>} {(SQ <' '>)})
                              ]
                              negated: F
                              stderr_indices: []
                            )
                          right: <Id.Backtick_Right '`'>
                        )
                      )
                    }
                  spids: [1038]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [DEVn]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName DEVall)}])
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'fstyp_output='>
                              name: fstyp_output
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: 
                                    (command.Simple
                                      words: [{<'/usr/sbin/fstyp'>} {<-a>} {($ Id.VSub_DollarName DEVn)}]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '2>&'>
                                          loc: (redir_loc.Fd fd:2)
                                          arg: {<1>}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                  right: <Id.Backtick_Right '`'>
                                )
                              )
                            }
                          spids: [1155]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} 
                                      {<Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FSPATH='> name:FSPATH)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName DEVn)}
                                  spids: [1188]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'gen_volume_label='>
                                      name: gen_volume_label
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (command_sub
                                          left_token: <Id.Left_Backtick '`'>
                                          child: 
                                            (command.Pipeline
                                              children: [
                                                (C {<echo>} {(DQ ($ Id.VSub_DollarName fstyp_output))})
                                                (C {<sed>} {<-n>} 
                                                  {(SQ <'/^gen_volume_label: .\\(.*\\).$/s//\\1/p'>)}
                                                )
                                              ]
                                              negated: F
                                              stderr_indices: []
                                            )
                                          right: <Id.Backtick_Right '`'>
                                        )
                                      )
                                    }
                                  spids: [1192]
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ ($ Id.VSub_DollarName gen_volume_label))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'FSNAME='>
                                              name: FSNAME
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (command_sub
                                                  left_token: <Id.Left_Backtick '`'>
                                                  child: 
                                                    (command.Pipeline
                                                      children: [
                                                        (C {<echo>} 
                                                          {($ Id.VSub_DollarName gen_volume_label)}
                                                        )
                                                        (C {<'/usr/xpg4/bin/tr'>} {(SQ <'[:upper:] '>)} 
                                                          {(SQ <'[:lower:]_'>)}
                                                        )
                                                      ]
                                                      negated: F
                                                      stderr_indices: []
                                                    )
                                                  right: <Id.Backtick_Right '`'>
                                                )
                                              )
                                            }
                                          spids: [1247]
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [1227 1244]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FSTYPE='> name:FSTYPE)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<echo>} {(DQ ($ Id.VSub_DollarName fstyp_output))})
                                              (C {<'/usr/bin/head'>} {<-1>})
                                            ]
                                            negated: F
                                            stderr_indices: []
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [1287]
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ ($ Id.VSub_DollarName FSTYPE))} {<Id.Lit_Equals '='>} {<hsfs>} {<-a>} 
                                              {
                                                (command_sub
                                                  left_token: <Id.Left_Backtick '`'>
                                                  child: 
                                                    (C {<'/usr/bin/expr'>} 
                                                      {($ Id.VSub_DollarName FSPATH)} {<Id.Lit_Colon ':'>} {(SQ <'.*p0'>)}
                                                    )
                                                  right: <Id.Backtick_Right '`'>
                                                )
                                              } {<-gt>} {<0>} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'FSPATH='>
                                              name: FSPATH
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {<echo>} {($ Id.VSub_DollarName FSPATH)})
                                                      (C {<'/usr/bin/sed'>} {(SQ <'s/p0$/s2/'>)})
                                                    ]
                                                    negated: F
                                                    stderr_indices: []
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                          spids: [1345]
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [1305 1342]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                            )
                          ]
                          spids: [1172 1185]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: findmounts
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [
                {<nawk>}
                {<-f>}
                {<->}
                {<-v>}
                {<Id.Lit_VarLike 'vold_root='> (DQ ($ Id.VSub_DollarName VOLD_ROOT))}
                {<-v>}
                {<Id.Lit_VarLike 'devs='> (DQ ($ Id.VSub_Star '*'))}
                {<'/etc/mnttab'>}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(DQ <ENDOFAWKPGM>)}
                      here_end_span_id: 1454
                      stdin_parts: [
                        <'\tBEGIN {\n'>
                        <'\t\tsplit(devs, devlist, " ");\n'>
                        <'\t\tfor (devN in devlist) {\n'>
                        <'\t\t\tdev = devlist[devN];\n'>
                        <'\t\t\trealdevlist[dev] = 1;\n'>
                        <'\t\t\tsub(/.*\\//, "", dev);\n'>
                        <'\t\t\tsub(/s[0-9]$/, "", dev);\n'>
                        <'\t\t\tif (vold_root != "") {\n'>
                        <'\t\t\t\tvold_dir[vold_root "/dev/dsk/" dev] = 1;\n'>
                        <'\t\t\t\tvold_dir[vold_root "/dev/rdsk/" dev] = 1;\n'>
                        <'\t\t\t}\n'>
                        <'\t\t}\n'>
                        <'\t}\n'>
                        <'\n'>
                        <'\t{\n'>
                        <'\t\tfor (dev in realdevlist) {\n'>
                        <'\t\t\tif ($1 == dev) {\n'>
                        <'\t\t\t\tmountpoint = $2;\n'>
                        <'\t\t\t\tprint mountpoint;\n'>
                        <'\t\t\t}\n'>
                        <'\t\t}\n'>
                        <'\t\tfor (dev in vold_dir) {\n'>
                        <'\t\t\tif (substr($1, 1, length(dev)) == dev) {\n'>
                        <'\t\t\t\tmountpoint = $2;\n'>
                        <'\t\t\t\tprint mountpoint;\n'>
                        <'\t\t\t}\n'>
                        <'\t\t}\n'>
                        <'\t}\n'>
                      ]
                    )
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: do_allocate
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName VOLUME_MEDIATYPE)} 
                              {<Id.Lit_Equals '='>} {<floppy>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eject_msg='> name:eject_msg)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: 
                                    (command.Simple
                                      words: [{<eject>} {<-q>} {($ Id.VSub_DollarName DEVFILE)}]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '2>&'>
                                          loc: (redir_loc.Fd fd:2)
                                          arg: {<1>}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                  right: <Id.Backtick_Right '`'>
                                )
                              )
                            }
                          spids: [1500]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'eject_status='>
                              name: eject_status
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_QMark '?'))}
                          spids: [1517]
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName eject_status)}
                      arms: [
                        (case_arm
                          pat_list: [{<1>}]
                          action: [
                            (C {<okcancel>} {(DQ <'Insert disk in '> ($ Id.VSub_DollarName DEVICE) <.>)})
                            (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_Exit exit>
                                      arg_word: {<0>}
                                    )
                                  ]
                                  spids: [1546 1560]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                          spids: [1530 1531 1569 -1]
                        )
                        (case_arm
                          pat_list: [{<3>}]
                          action: [
                            (C {<error_exit>} {($ Id.VSub_DollarName DEVICE)} 
                              {(DQ <'Error checking for media in drive.'>)}
                            )
                          ]
                          spids: [1572 1573 1588 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1480 1493]
                )
              ]
              else_action: [
                (C {<okcancel>} {(DQ <'Insert disk in '> ($ Id.VSub_DollarName DEVICE) <.>)})
                (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_Exit exit> arg_word:{<0>})]
                      spids: [1606 1620]
                    )
                  ]
                  else_action: []
                  redirects: []
                )
              ]
              redirects: []
            )
            (C {<yesno>} {(DQ <'Do you want '> ($ Id.VSub_DollarName DEVICE) <' mounted?'>)})
            (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_Exit exit> arg_word:{<0>})]
                  spids: [1645 1659]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName VOLUME_MEDIATYPE)} 
                              {<Id.Lit_Equals '='>} {<cdrom>} {<-o>} {($ Id.VSub_DollarName VOLUME_MEDIATYPE)} {<Id.Lit_Equals '='>} {<rmdisk>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<find_fs>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName FSPATH))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'VOLUME_PATH='>
                                      name: VOLUME_PATH
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName FSPATH)}
                                  spids: [1722]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1702 1719]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName FSNAME))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'VOLUME_NAME='>
                                      name: VOLUME_NAME
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName FSNAME)}
                                  spids: [1750]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1730 1747]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [1671 1692]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_ACTION='> name:VOLUME_ACTION)
                  op: assign_op.Equal
                  rhs: {<insert>}
                  spids: [1760]
                )
              ]
              redirects: []
            )
            (C {<chown>} {($ Id.VSub_DollarName VOLUME_USER)} {($ Id.VSub_DollarName VOLUME_PATH)})
            (C {<chmod>} {<700>} {($ Id.VSub_DollarName VOLUME_PATH)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rmmount_msg='> name:rmmount_msg)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: 
                            (command.Simple
                              words: [{<'/usr/sbin/rmmount'>}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          right: <Id.Backtick_Right '`'>
                        )
                      )
                    }
                  spids: [1800]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rmmount_status='> name:rmmount_status)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_QMark '?'))}
                  spids: [1813]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName rmmount_status)} {<-eq>} 
                              {<0>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'EXIT_STATUS='>
                              name: EXIT_STATUS
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName CLEAN_MOUNT)}
                          spids: [1835]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1819 1832]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName rmmount_status)} {<-gt>} 
                              {<0>} {<-a>} {($ Id.VSub_DollarName VOLUME_MEDIATYPE)} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<cdrom>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} 
                      {
                        (DQ <'Read-write mount of '> ($ Id.VSub_DollarName DEVICE) 
                          <' failed. Mounting read-only.'>
                        )
                      }
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'VOLUME_ACTION='>
                                  name: VOLUME_ACTION
                                )
                              op: assign_op.Equal
                              rhs: {<remount>}
                              spids: [1881]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<export>} {<VOLUME_ACTION>})
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'VOLUME_MOUNT_MODE='>
                                  name: VOLUME_MOUNT_MODE
                                )
                              op: assign_op.Equal
                              rhs: {<ro>}
                              spids: [1890]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<export>} {<VOLUME_MOUNT_MODE>})
                    (C 
                      {
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: (C {<'/usr/sbin/rmmount'>})
                          right: <Id.Backtick_Right '`'>
                        )
                      }
                    )
                    (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 'EXIT_STATUS='>
                                      name: EXIT_STATUS
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName CLEAN_MOUNT)}
                                  spids: [1922]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1906 1919]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [1839 1861]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-d>} {<'/tmp/.removable'>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<chown>} {<root>} {<'/tmp/.removable'>})
                    (C {<chmod>} {<777>} {<'/tmp/.removable'>})
                  ]
                  spids: [1937 1948]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: do_deallocate
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName VOLUME_MEDIATYPE)} 
                              {<Id.Lit_Equals '='>} {<cdrom>} {<-o>} {($ Id.VSub_DollarName VOLUME_MEDIATYPE)} {<Id.Lit_Equals '='>} {<rmdisk>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-h>} 
                                      {<'/'> ($ Id.VSub_DollarName VOLUME_MEDIATYPE) <'/'> 
                                        ($ Id.VSub_DollarName DEVICE)
                                      } {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'VOLUME_PATH='>
                                      name: VOLUME_PATH
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<ls>} {<-l>} 
                                                {<'/'> ($ Id.VSub_DollarName VOLUME_MEDIATYPE) <'/'> 
                                                  ($ Id.VSub_DollarName DEVICE)
                                                }
                                              )
                                              (C {<cut>} {<-d>} {(SQ <'>'>)} {<-f2>})
                                            ]
                                            negated: F
                                            stderr_indices: []
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [2023]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'VOLUME_DEVICE='>
                                      name: VOLUME_DEVICE
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<mount>} {<-p>})
                                              (C {<grep>} {($ Id.VSub_DollarName VOLUME_PATH)})
                                              (C {<cut>} {<-d>} {(SQ <' '>)} {<-f1>})
                                            ]
                                            negated: F
                                            stderr_indices: []
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                  spids: [2053]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2002 2016]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [1978 1999]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ ($ Id.VSub_DollarName VOLUME_PATH))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'VOLUME_ACTION='>
                              name: VOLUME_ACTION
                            )
                          op: assign_op.Equal
                          rhs: {<eject>}
                          spids: [2105]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'rmmount_msg='>
                              name: rmmount_msg
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: 
                                    (command.Simple
                                      words: [{<'/usr/sbin/rmmount'>}]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '2>&'>
                                          loc: (redir_loc.Fd fd:2)
                                          arg: {<1>}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                  right: <Id.Backtick_Right '`'>
                                )
                              )
                            }
                          spids: [2117]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'rmmount_status='>
                              name: rmmount_status
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_QMark '?'))}
                          spids: [2130]
                        )
                      ]
                      redirects: []
                    )
                    (command.ForEach
                      iter_names: [name]
                      iterable: 
                        (for_iter.Words
                          words: [
                            {<'/'> ($ Id.VSub_DollarName VOLUME_MEDIATYPE) <'/'> <Id.Lit_Star '*'>}
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-h>} 
                                              {($ Id.VSub_DollarName name)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'target='>
                                              name: target
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {<ls>} {<-l>} {($ Id.VSub_DollarName name)})
                                                      (C {<awk>} {(SQ <'{ print $NF; }'>)})
                                                    ]
                                                    negated: F
                                                    stderr_indices: []
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                          spids: [2170]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'target_dir='>
                                              name: target_dir
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: (C {<dirname>} {($ Id.VSub_DollarName target)})
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                          spids: [2190]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'target_device='>
                                              name: target_device
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {<echo>} {($ Id.VSub_DollarName target_dir)})
                                                      (C {<sed>} {<-e>} {(SQ <'s/^.*-\\(.*\\)$/\\1/'>)})
                                                    ]
                                                    negated: F
                                                    stderr_indices: []
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                          spids: [2200]
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<Id.Lit_LBracket '['>} 
                                                      {(DQ ($ Id.VSub_DollarName target_device))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName DEVICE))} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [(C {<rm>} {<-f>} {($ Id.VSub_DollarName name)})]
                                          spids: [2231 2248]
                                        )
                                      ]
                                      else_action: []
                                      redirects: []
                                    )
                                  ]
                                  spids: [2156 2167]
                                )
                              ]
                              else_action: []
                              redirects: []
                            )
                          ]
                        )
                      redirects: []
                    )
                  ]
                  spids: [2089 2102]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'rmmount_status='>
                          name: rmmount_status
                        )
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [2270]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName rmmount_status)}
              arms: [
                (case_arm
                  pat_list: [{<1>}]
                  action: [
                    (C {<error_exit>} {($ Id.VSub_DollarName DEVICE)} 
                      {(DQ <'Error unmounting '> ($ Id.VSub_DollarName DEVICE))} {(DQ ($ Id.VSub_DollarName rmmount_msg))}
                    )
                  ]
                  spids: [2285 2286 2304 -1]
                )
                (case_arm
                  pat_list: [{<0>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName FLAG))} 
                                      {<Id.Lit_Equals '='>} {(DQ <f>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'eject_msg='>
                                      name: eject_msg
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (command_sub
                                          left_token: <Id.Left_Backtick '`'>
                                          child: 
                                            (command.Simple
                                              words: [{<eject>} {<-f>} {($ Id.VSub_DollarName DEVICE)}]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_GreatAnd '2>&'>
                                                  loc: (redir_loc.Fd fd:2)
                                                  arg: {<1>}
                                                )
                                              ]
                                              more_env: []
                                              do_fork: T
                                            )
                                          right: <Id.Backtick_Right '`'>
                                        )
                                      )
                                    }
                                  spids: [2339]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2318 2336]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'eject_msg='>
                                  name: eject_msg
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_Backtick '`'>
                                      child: 
                                        (command.Simple
                                          words: [{<eject>} {($ Id.VSub_DollarName DEVICE)}]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_GreatAnd '2>&'>
                                              loc: (redir_loc.Fd fd:2)
                                              arg: {<1>}
                                            )
                                          ]
                                          more_env: []
                                          do_fork: T
                                        )
                                      right: <Id.Backtick_Right '`'>
                                    )
                                  )
                                }
                              spids: [2359]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'eject_status='>
                              name: eject_status
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_QMark '?'))}
                          spids: [2377]
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName eject_status)}
                      arms: [
                        (case_arm
                          pat_list: [{<0>} {<1>} {<4>}]
                          action: [
                            (command.Case
                              to_match: {($ Id.VSub_DollarName VOLUME_MEDIATYPE)}
                              arms: [
                                (case_arm
                                  pat_list: [{<floppy>} {<cdrom>} {<rmdisk>}]
                                  action: [
                                    (C {<msg>} 
                                      {
                                        (DQ <'Please remove the disk from '> 
                                          ($ Id.VSub_DollarName DEVICE) <.>
                                        )
                                      }
                                    )
                                  ]
                                  spids: [2408 2413 2423 -1]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2390 2395 2427 -1]
                        )
                        (case_arm
                          pat_list: [{<3>}]
                          action: [
                            (C {<msg>} {($ Id.VSub_DollarName DEVICE)} 
                              {(DQ <'Error ejecting disk from '> ($ Id.VSub_DollarName DEVICE))} {(DQ ($ Id.VSub_DollarName eject_msg))}
                            )
                          ]
                          spids: [2430 2431 2451 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2307 2308 -1 2457]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: do_init
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eject_msg='> name:eject_msg)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: 
                            (command.Simple
                              words: [{<eject>} {<-f>} {($ Id.VSub_DollarName DEVICE)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          right: <Id.Backtick_Right '`'>
                        )
                      )
                    }
                  spids: [2478]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'eject_status='> name:eject_status)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_QMark '?'))}
                  spids: [2495]
                )
              ]
              redirects: []
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName eject_status)}
              arms: [
                (case_arm
                  pat_list: [{<0>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName silent))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <y>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<ok_msg>})]
                          spids: [2516 2534]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [2509 2510 2546 -1]
                )
                (case_arm
                  pat_list: [{<1>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName silent))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <y>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<error_msg>})]
                          spids: [2556 2574]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [2549 2550 2586 -1]
                )
                (case_arm
                  pat_list: [{<3>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName silent))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <y>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<error_msg>})]
                          spids: [2596 2614]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (C {<msg>} {($ Id.VSub_DollarName DEVICE)} 
                      {(DQ <'Error ejecting disk from '> ($ Id.VSub_DollarName DEVICE))} {(DQ ($ Id.VSub_DollarName eject_msg))}
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<2>}
                    )
                  ]
                  spids: [2589 2590 2642 -1]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (C {<trap>} {(DQ )} {<INT>} {<TERM>} {<QUIT>} {<TSTP>} {<ABRT>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH)
          op: assign_op.Equal
          rhs: {(DQ <'/usr/bin:/usr/sbin'>)}
          spids: [2677]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MODE='> name:MODE)
          op: assign_op.Equal
          rhs: {(DQ <allocate>)}
          spids: [2682]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SILENT='> name:SILENT)
          op: assign_op.Equal
          rhs: {<n>}
          spids: [2687]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WDWMSG='> name:WDWMSG)
          op: assign_op.Equal
          rhs: {(DQ <'/etc/security/lib/wdwmsg'>)}
          spids: [2690]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_ZONE_PATH='> name:VOLUME_ZONE_PATH)
          op: assign_op.Equal
          rhs: {(DQ <'/'>)}
          spids: [2695]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'Usage: disk_clean [-s|-f|-i|-I] devicename -[A|D] [username] [zonename] [zonepath]'
                >
              )
            }
          spids: [2700]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXIT_STATUS='> name:EXIT_STATUS)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [2705]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CLEAN_MOUNT='> name:CLEAN_MOUNT)
          op: assign_op.Equal
          rhs: {<4>}
          spids: [2708]
        )
      ]
      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 {<uname>} {<-p>})
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [2711]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG)
          op: assign_op.Equal
          rhs: {<i>}
          spids: [2720]
        )
      ]
      redirects: []
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: (condition.Shell commands:[(C {<getopts>} {<ifsI>} {<c>})])
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {($ Id.VSub_DollarName c)}
              arms: [
                (case_arm
                  pat_list: [{<i>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName c)}
                          spids: [2754]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2750 2751 2756 -1]
                )
                (case_arm
                  pat_list: [{<f>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName c)}
                          spids: [2763]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2759 2760 2765 -1]
                )
                (case_arm
                  pat_list: [{<s>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName c)}
                          spids: [2772]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2768 2769 2774 -1]
                )
                (case_arm
                  pat_list: [{<I>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAG='> name:FLAG)
                          op: assign_op.Equal
                          rhs: {<i>}
                          spids: [2781]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'silent='> name:silent)
                          op: assign_op.Equal
                          rhs: {<y>}
                          spids: [2785]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2777 2778 2787 -1]
                )
                (case_arm
                  pat_list: [{(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')}]
                  action: [
                    (C {<echo>} {($ Id.VSub_DollarName USAGE)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [2790 2791 2802 -1]
                )
              ]
              redirects: []
            )
          ]
        )
      redirects: []
    )
    (C {<shift>} 
      {
        (command_sub
          left_token: <Id.Left_Backtick '`'>
          child: (C {<expr>} {($ Id.VSub_DollarName OPTIND)} {<->} {<1>})
          right: <Id.Backtick_Right '`'>
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEVICE='> name:DEVICE)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number 1)}
          spids: [2825]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MODE='> name:MODE)
          op: assign_op.Equal
          rhs: {(DQ <deallocate>)}
          spids: [2828]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 2))} {<Id.Lit_Equals '='>} 
                      {(DQ <-A>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MODE='> name:MODE)
                  op: assign_op.Equal
                  rhs: {(DQ <allocate>)}
                  spids: [2853]
                )
              ]
              redirects: []
            )
          ]
          spids: [2833 2850]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 2))} {<Id.Lit_Equals '='>} 
                      {(DQ <-D>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MODE='> name:MODE)
                  op: assign_op.Equal
                  rhs: {(DQ <deallocate>)}
                  spids: [2878]
                )
              ]
              redirects: []
            )
          ]
          spids: [2858 2875]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAP='> name:MAP)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {<'/usr/sbin/list_devices'>} {<-s>} {<-l>} {($ Id.VSub_DollarName DEVICE)})
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [2889]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FILES='> name:FILES)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {($ Id.VSub_DollarName MAP)})
                      (C {<cut>} {<-f4>} {<-d> <Id.Lit_Colon ':'>})
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [2902]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEVFILE='> name:DEVFILE)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {($ Id.VSub_DollarName FILES)})
                      (C {<cut>} {<-f1>} {<-d> (DQ <' '>)})
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [2923]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_DEVICE='> name:VOLUME_DEVICE)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {($ Id.VSub_DollarName FILES)})
                      (C {<cut>} {<-f2>} {<-d> (DQ <' '>)})
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [2951]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MEDIATYPE='> name:MEDIATYPE)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {($ Id.VSub_DollarName MAP)})
                      (C {<cut>} {<-f3>} {<-d> <Id.Lit_Colon ':'>})
                      (C {<cut>} {<-f2>} {<-d> (DQ <' '>)})
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [2974]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MEDIATYPE))} 
                      {<Id.Lit_Equals '='>} {(DQ <sr>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'VOLUME_MEDIATYPE='>
                      name: VOLUME_MEDIATYPE
                    )
                  op: assign_op.Equal
                  rhs: {(DQ <cdrom>)}
                  spids: [3027]
                )
              ]
              redirects: []
            )
          ]
          spids: [3007 3024]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MEDIATYPE))} 
                      {<Id.Lit_Equals '='>} {(DQ <fd>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'VOLUME_MEDIATYPE='>
                      name: VOLUME_MEDIATYPE
                    )
                  op: assign_op.Equal
                  rhs: {(DQ <floppy>)}
                  spids: [3052]
                )
              ]
              redirects: []
            )
          ]
          spids: [3032 3049]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MEDIATYPE))} 
                      {<Id.Lit_Equals '='>} {(DQ <rmdisk>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'VOLUME_MEDIATYPE='>
                      name: VOLUME_MEDIATYPE
                    )
                  op: assign_op.Equal
                  rhs: {(DQ <rmdisk>)}
                  spids: [3077]
                )
              ]
              redirects: []
            )
          ]
          spids: [3057 3074]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_PATH='> name:VOLUME_PATH)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName DEVFILE)}
          spids: [3085]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MACH))} 
                          {<Id.Lit_Equals '='>} {(DQ <i386>)} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MEDIATYPE))} 
                          {<Id.Lit_Equals '='>} {(DQ <rmdisk>)} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_PATH='> name:VOLUME_PATH)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {($ Id.VSub_DollarName DEVFILE)})
                              (C {<sed>} {<-e>} {(SQ <'s/s0/p0/'>)})
                            ]
                            negated: F
                            stderr_indices: []
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [3127]
                )
              ]
              redirects: []
            )
          ]
          spids: [3091 3124]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SYMDEV='> name:SYMDEV)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {($ Id.VSub_DollarName DEVICE)})
                      (C {<sed>} {<-e>} {(SQ <'s/_//'>)})
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [3149]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SYMNUM='> name:SYMNUM)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {($ Id.VSub_DollarName SYMDEV)})
                      (C {<sed>} {<-e>} {(SQ <'s/[a-z]*//g'>)})
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [3171]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SYMDEV='> name:SYMDEV)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {($ Id.VSub_DollarName SYMDEV)})
                      (C {<sed>} {<-e>} {(SQ <'s/[0-9]*//g'>)})
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [3190]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName SYMDEV))} 
                      {<Id.Lit_Equals '='>} {(DQ <sr>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_SYMDEV='> name:VOLUME_SYMDEV)
                  op: assign_op.Equal
                  rhs: {(DQ <cdrom>) ($ Id.VSub_DollarName SYMNUM)}
                  spids: [3229]
                )
              ]
              redirects: []
            )
          ]
          spids: [3209 3226]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName SYMDEV))} 
                      {<Id.Lit_Equals '='>} {(DQ <fd>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_SYMDEV='> name:VOLUME_SYMDEV)
                  op: assign_op.Equal
                  rhs: {(DQ <floppy>) ($ Id.VSub_DollarName SYMNUM)}
                  spids: [3255]
                )
              ]
              redirects: []
            )
          ]
          spids: [3235 3252]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName SYMDEV))} 
                      {<Id.Lit_Equals '='>} {(DQ <rmdisk>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_SYMDEV='> name:VOLUME_SYMDEV)
                  op: assign_op.Equal
                  rhs: {(DQ <rmdisk>) ($ Id.VSub_DollarName SYMNUM)}
                  spids: [3281]
                )
              ]
              redirects: []
            )
          ]
          spids: [3261 3278]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_SYMDEV='> name:VOLUME_SYMDEV)
              op: assign_op.Equal
              rhs: {($ Id.VSub_DollarName SYMDEV) ($ Id.VSub_DollarName SYMNUM)}
              spids: [3290]
            )
          ]
          redirects: []
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_ZONE_NAME='> name:VOLUME_ZONE_NAME)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number 4)}
          spids: [3297]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_ZONE_PATH='> name:VOLUME_ZONE_PATH)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number 5)}
          spids: [3301]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MODE))} {<Id.Lit_Equals '='>} 
                      {(DQ <allocate>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_Number 3))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'VOLUME_USER='>
                              name: VOLUME_USER
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 3)}
                          spids: [3344]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3325 3338]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_USER='> name:VOLUME_USER)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: (C {<'/usr/xpg4/bin/id'>} {<-u>} {<-nr>})
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                      spids: [3351]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
          ]
          spids: [3305 3322]
        )
      ]
      else_action: [
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-d>} 
                          {(${ Id.VSub_Name VOLUME_ZONE_PATH) <'/'> (${ Id.VSub_Name VOLUME_MEDIATYPE) 
                            <'/'> <Id.Lit_Star '*'> <-> (${ Id.VSub_Name DEVICE)
                          } {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_USER='> name:VOLUME_USER)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Pipeline
                                children: [
                                  (C {<ls>} {<-ld>} 
                                    {(${ Id.VSub_Name VOLUME_ZONE_PATH) <'/'> 
                                      (${ Id.VSub_Name VOLUME_MEDIATYPE) <'/'> <Id.Lit_Star '*'> <-> (${ Id.VSub_Name DEVICE)
                                    }
                                  )
                                  (C {<awk>} {(SQ <'/^d/{print $3}'>)})
                                ]
                                negated: F
                                stderr_indices: []
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                      spids: [3406]
                    )
                  ]
                  redirects: []
                )
              ]
              spids: [3380 3403]
            )
          ]
          else_action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_Number 3))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'VOLUME_USER='>
                              name: VOLUME_USER
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 3)}
                          spids: [3457]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3441 3454]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_USER='> name:VOLUME_USER)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: (C {<'/usr/xpg4/bin/id'>} {<-u>} {<-nr>})
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                      spids: [3464]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
          ]
          redirects: []
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_NAME='> name:VOLUME_NAME)
          op: assign_op.Equal
          rhs: {<unnamed_> (${ Id.VSub_Name VOLUME_MEDIATYPE)}
          spids: [3485]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName VOLUME_MEDIATYPE))} 
                      {<Id.Lit_Equals '='>} {(DQ <rmdisk>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_PCFS_ID='> name:VOLUME_PCFS_ID)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [3516]
                )
              ]
              redirects: []
            )
          ]
          spids: [3496 3513]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VOLUME_PCFS_ID='> name:VOLUME_PCFS_ID)
              op: assign_op.Equal
              rhs: (rhs_word.Empty)
              spids: [3522]
            )
          ]
          redirects: []
        )
      ]
      redirects: []
    )
    (C {<export>} {<VOLUME_ACTION>} {<VOLUME_DEVICE>} {<VOLUME_MEDIATYPE>} {<VOLUME_NAME>} 
      {<VOLUME_PCFS_ID>}
    )
    (C {<export>} {<VOLUME_PATH>} {<VOLUME_SYMDEV>} {<VOLUME_USER>} {<VOLUME_ZONE_NAME>} 
      {<VOLUME_ZONE_PATH>}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USERDIR='> name:USERDIR)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name VOLUME_USER) <-> (${ Id.VSub_Name DEVICE)}
          spids: [3552]
        )
      ]
      redirects: []
    )
    (C {<msg_init>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MODE))} {<Id.Lit_Equals '='>} 
                      {(DQ <allocate>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MSGDEV='> name:MSGDEV)
                  op: assign_op.Equal
                  rhs: {<tty>}
                  spids: [3588]
                )
              ]
              redirects: []
            )
            (C {<do_allocate>})
          ]
          spids: [3568 3585]
        )
      ]
      else_action: [
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName FLAG))} 
                          {<Id.Lit_Equals '='>} {(DQ <i>)} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MSGDEV='> name:MSGDEV)
                      op: assign_op.Equal
                      rhs: {<console>}
                      spids: [3618]
                    )
                  ]
                  redirects: []
                )
                (C {<do_init>})
              ]
              spids: [3597 3615]
            )
          ]
          else_action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MSGDEV='> name:MSGDEV)
                  op: assign_op.Equal
                  rhs: {<tty>}
                  spids: [3628]
                )
              ]
              redirects: []
            )
            (C {<do_deallocate>})
          ]
          redirects: []
        )
      ]
      redirects: []
    )
    (command.ControlFlow
      token: <Id.ControlFlow_Exit exit>
      arg_word: {($ Id.VSub_DollarName EXIT_STATUS)}
    )
  ]
)