(command.CommandList
  children: [
    (command.ShFunction
      name: umount_all_dir
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_udir)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [93]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_umntdirs)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<mount>})
                              (C {<sort>} {<-r>})
                              (C {<grep>} {(DQ <'on '> ($ Id.VSub_DollarName '$_udir'))})
                              (C {<cut>} {<-d>} {(SQ <' '>)} {<-f>} {<3>})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [99]
                )
              ]
            )
            (command.ForEach
              iter_name: _ud
              iter_words: [{($ Id.VSub_DollarName '$_umntdirs')}]
              do_arg_iter: F
              body: (command.DoGroup children:[(C {<umount>} {<-f>} {(${ Id.VSub_Name _ud)})])
            )
          ]
        )
    )
    (command.Sentence
      child: 
        (command.ShFunction
          name: start_gmirror_sync
          body: 
            (BraceGroup
              children: [
                (C {<cd>} {(${ Id.VSub_Name MIRRORCFGDIR)})
                (command.ForEach
                  iter_name: DISK
                  iter_words: [
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<ls>} {(${ Id.VSub_Name MIRRORCFGDIR)})
                      )
                    }
                  ]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:MIRRORDISK)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_Backtick '`'>
                                      child: 
                                        (command.Pipeline
                                          children: [
                                            (C {<cat>} {(${ Id.VSub_Name DISK)})
                                            (C {<cut>} {<-d>} {(SQ <':'>)} {<-f>} {<1>})
                                          ]
                                          negated: F
                                        )
                                    )
                                  )
                                }
                              spids: [201]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:MIRRORBAL)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_Backtick '`'>
                                      child: 
                                        (command.Pipeline
                                          children: [
                                            (C {<cat>} {(${ Id.VSub_Name DISK)})
                                            (C {<cut>} {<-d>} {(SQ <':'>)} {<-f>} {<2>})
                                          ]
                                          negated: F
                                        )
                                    )
                                  )
                                }
                              spids: [229]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:MIRRORNAME)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_Backtick '`'>
                                      child: 
                                        (command.Pipeline
                                          children: [
                                            (C {<cat>} {(${ Id.VSub_Name DISK)})
                                            (C {<cut>} {<-d>} {(SQ <':'>)} {<-f>} {<3>})
                                          ]
                                          negated: F
                                        )
                                    )
                                  )
                                }
                              spids: [257]
                            )
                          ]
                        )
                        (C {<rc_nohalt>} {(DQ <'gmirror forget '> (${ Id.VSub_Name MIRRORNAME))})
                        (C {<rc_halt>} 
                          {
                            (DQ <'gmirror insert '> (${ Id.VSub_Name MIRRORNAME) <' '> 
                              (${ Id.VSub_Name MIRRORDISK)
                            )
                          }
                        )
                      ]
                    )
                )
              ]
            )
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.ShFunction
          name: unmount_all_filesystems
          body: 
            (BraceGroup
              children: [
                (C {<cp>} {(${ Id.VSub_Name LOGOUT)} 
                  {(${ Id.VSub_Name FSMNT) <'/root/pc-sysinstall.log'>}
                )
                (C {<cd>} {<'/'>})
                (C {<zfs_cleanup_unmount>})
                (command.ForEach
                  iter_name: PART
                  iter_words: [
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<ls>} {(${ Id.VSub_Name PARTDIR)})
                      )
                    }
                  ]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:PARTDEV)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (C {<echo>} {($ Id.VSub_DollarName '$PART')})
                                          (C {<sed>} {(SQ <'s|-|/|g'>)})
                                        ]
                                        negated: F
                                      )
                                  )
                                }
                              spids: [391]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:PARTFS)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_Backtick '`'>
                                      child: 
                                        (command.Pipeline
                                          children: [
                                            (C {<cat>} 
                                              {(${ Id.VSub_Name PARTDIR) <'/'> (${ Id.VSub_Name PART)}
                                            )
                                            (C {<cut>} {<-d>} {(SQ <'#'>)} {<-f>} {<1>})
                                          ]
                                          negated: F
                                        )
                                    )
                                  )
                                }
                              spids: [410]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:PARTMNT)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_Backtick '`'>
                                      child: 
                                        (command.Pipeline
                                          children: [
                                            (C {<cat>} 
                                              {(${ Id.VSub_Name PARTDIR) <'/'> (${ Id.VSub_Name PART)}
                                            )
                                            (C {<cut>} {<-d>} {(SQ <'#'>)} {<-f>} {<2>})
                                          ]
                                          negated: F
                                        )
                                    )
                                  )
                                }
                              spids: [442]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:PARTENC)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_Backtick '`'>
                                      child: 
                                        (command.Pipeline
                                          children: [
                                            (C {<cat>} 
                                              {(${ Id.VSub_Name PARTDIR) <'/'> (${ Id.VSub_Name PART)}
                                            )
                                            (C {<cut>} {<-d>} {(SQ <'#'>)} {<-f>} {<3>})
                                          ]
                                          negated: F
                                        )
                                    )
                                  )
                                }
                              spids: [474]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:PARTLABEL)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_Backtick '`'>
                                      child: 
                                        (command.Pipeline
                                          children: [
                                            (C {<cat>} 
                                              {(${ Id.VSub_Name PARTDIR) <'/'> (${ Id.VSub_Name PART)}
                                            )
                                            (C {<cut>} {<-d>} {(SQ <'#'>)} {<-f>} {<4>})
                                          ]
                                          negated: F
                                        )
                                    )
                                  )
                                }
                              spids: [506]
                            )
                          ]
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name PARTENC))} 
                                      {<Id.Lit_Equals '='>} {(DQ <ON>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:EXT)
                                      op: assign_op.Equal
                                      rhs: {(DQ <.eli>)}
                                      spids: [561]
                                    )
                                  ]
                                )
                              ]
                              spids: [539 558]
                            )
                          ]
                          else_action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:EXT)
                                  op: assign_op.Equal
                                  rhs: {(DQ )}
                                  spids: [570]
                                )
                              ]
                            )
                          ]
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name PARTFS))} 
                                      {<Id.Lit_Equals '='>} {(DQ <SWAP>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<rc_nohalt>} 
                                  {(DQ <'swapoff '> (${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT))}
                                )
                              ]
                              spids: [579 598]
                            )
                          ]
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$PARTMNT'))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <'/'>)} {<-a>} {(DQ (${ Id.VSub_Name PARTMNT))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <none>)} 
                                      {<-a>} {(DQ (${ Id.VSub_Name PARTFS))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <ZFS>)} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<rc_halt>} 
                                  {
                                    (DQ <'umount -f '> (${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT))
                                  }
                                )
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} 
                                              {(DQ <'/dev/label/'> (${ Id.VSub_Name PARTLABEL))} {<Id.Lit_RBracket ']'>}
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.Case
                                          to_match: {(${ Id.VSub_Name PARTFS)}
                                          arms: [
                                            (case_arm
                                              pat_list: [{<UFS>}]
                                              action: [
                                                (C {<glabel>} {<label>} {(${ Id.VSub_Name PARTLABEL)} 
                                                  {(${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT)}
                                                )
                                              ]
                                              spids: [721 722 739 -1]
                                            )
                                            (case_arm
                                              pat_list: [{<UFS> <Id.Lit_Other '+'> <S>}]
                                              action: [
                                                (C {<glabel>} {<label>} {(${ Id.VSub_Name PARTLABEL)} 
                                                  {(${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT)}
                                                )
                                              ]
                                              spids: [742 745 762 -1]
                                            )
                                            (case_arm
                                              pat_list: [{<UFS> <Id.Lit_Other '+'> <SUJ>}]
                                              action: [
                                                (C {<glabel>} {<label>} {(${ Id.VSub_Name PARTLABEL)} 
                                                  {(${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT)}
                                                )
                                              ]
                                              spids: [765 768 785 -1]
                                            )
                                            (case_arm
                                              pat_list: [{<UFS> <Id.Lit_Other '+'> <J>}]
                                              action: [
                                                (C {<glabel>} {<label>} {(${ Id.VSub_Name PARTLABEL)} 
                                                  {(${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT) 
                                                    <.journal>
                                                  }
                                                )
                                              ]
                                              spids: [788 791 809 -1]
                                            )
                                            (case_arm
                                              pat_list: [{<Id.Lit_Star '*'>}]
                                              spids: [812 813 815 -1]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [691 709]
                                    )
                                  ]
                                )
                              ]
                              spids: [622 670]
                            )
                          ]
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$PARTMNT'))} 
                                      {<Id.Lit_Equals '='>} {(DQ <'/'>)} {<-a>} {(DQ (${ Id.VSub_Name PARTFS))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <ZFS>)} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} 
                                              {(DQ <'/dev/label/'> (${ Id.VSub_Name PARTLABEL))} {<Id.Lit_RBracket ']'>}
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.Case
                                          to_match: {(${ Id.VSub_Name PARTFS)}
                                          arms: [
                                            (case_arm
                                              pat_list: [{<UFS>}]
                                              action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:ROOTRELABEL)
                                                      op: assign_op.Equal
                                                      rhs: 
                                                        {
                                                          (DQ <'glabel label '> 
                                                            (${ Id.VSub_Name PARTLABEL) <' '> (${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT)
                                                          )
                                                        }
                                                      spids: [901]
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [898 899 916 -1]
                                            )
                                            (case_arm
                                              pat_list: [{<UFS> <Id.Lit_Other '+'> <S>}]
                                              action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:ROOTRELABEL)
                                                      op: assign_op.Equal
                                                      rhs: 
                                                        {
                                                          (DQ <'glabel label '> 
                                                            (${ Id.VSub_Name PARTLABEL) <' '> (${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT)
                                                          )
                                                        }
                                                      spids: [924]
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [919 922 939 -1]
                                            )
                                            (case_arm
                                              pat_list: [{<UFS> <Id.Lit_Other '+'> <SUJ>}]
                                              action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:ROOTRELABEL)
                                                      op: assign_op.Equal
                                                      rhs: 
                                                        {
                                                          (DQ <'glabel label '> 
                                                            (${ Id.VSub_Name PARTLABEL) <' '> (${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT)
                                                          )
                                                        }
                                                      spids: [947]
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [942 945 962 -1]
                                            )
                                            (case_arm
                                              pat_list: [{<UFS> <Id.Lit_Other '+'> <J>}]
                                              action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:ROOTRELABEL)
                                                      op: assign_op.Equal
                                                      rhs: 
                                                        {
                                                          (DQ <'glabel label '> 
                                                            (${ Id.VSub_Name PARTLABEL) <' '> (${ Id.VSub_Name PARTDEV) (${ Id.VSub_Name EXT) <.journal>
                                                          )
                                                        }
                                                      spids: [970]
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [965 968 986 -1]
                                            )
                                            (case_arm
                                              pat_list: [{<Id.Lit_Star '*'>}]
                                              spids: [989 990 992 -1]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [868 886]
                                    )
                                  ]
                                )
                              ]
                              spids: [833 865]
                            )
                          ]
                        )
                      ]
                    )
                )
                (C {<rc_nohalt>} {(DQ <'umount -f '> (${ Id.VSub_Name FSMNT))})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} 
                              {(DQ (${ Id.VSub_Name FOUNDZFSROOT))} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (C {<rc_halt>} 
                          {(DQ <'zfs set mountpoint=legacy '> (${ Id.VSub_Name FOUNDZFSROOT))}
                        )
                      ]
                      spids: [1032 1049]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} 
                              {(DQ (${ Id.VSub_Name ROOTRELABEL))} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [(C {(${ Id.VSub_Name ROOTRELABEL)})]
                      spids: [1070 1087]
                    )
                  ]
                )
                (command.Simple
                  words: [{<rc_nohalt>} {(DQ <'umount -f '> (${ Id.VSub_Name CDMNT))}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  words: [{<ls>} {(${ Id.VSub_Name MIRRORCFGDIR) <'/'> <Id.Lit_Star '*'>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [(C {<start_gmirror_sync>})]
                      spids: [1139 1152]
                    )
                  ]
                )
              ]
            )
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.ShFunction
          name: unmount_all_filesystems_failure
          body: 
            (BraceGroup
              children: [
                (C {<cd>} {<'/'>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name INSTALLMODE))} 
                              {<Id.Lit_Equals '='>} {(DQ <fresh>)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ (${ Id.VSub_Name PARTDIR))} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (command.ForEach
                                  iter_name: PART
                                  iter_words: [
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: (C {<ls>} {(${ Id.VSub_Name PARTDIR)})
                                      )
                                    }
                                  ]
                                  do_arg_iter: F
                                  body: 
                                    (command.DoGroup
                                      children: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:PARTDEV)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (command_sub
                                                    left_token: <Id.Left_Backtick '`'>
                                                    child: 
                                                      (command.Pipeline
                                                        children: [
                                                          (C {<echo>} {($ Id.VSub_DollarName '$PART')})
                                                          (C {<sed>} {(SQ <'s|-|/|g'>)})
                                                        ]
                                                        negated: F
                                                      )
                                                  )
                                                }
                                              spids: [1258]
                                            )
                                          ]
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:PARTFS)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ 
                                                    (command_sub
                                                      left_token: <Id.Left_Backtick '`'>
                                                      child: 
                                                        (command.Pipeline
                                                          children: [
                                                            (C {<cat>} 
                                                              {(${ Id.VSub_Name PARTDIR) <'/'> 
                                                                (${ Id.VSub_Name PART)
                                                              }
                                                            )
                                                            (C {<cut>} {<-d>} {(SQ <'#'>)} {<-f>} {<1>})
                                                          ]
                                                          negated: F
                                                        )
                                                    )
                                                  )
                                                }
                                              spids: [1277]
                                            )
                                          ]
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:PARTMNT)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ 
                                                    (command_sub
                                                      left_token: <Id.Left_Backtick '`'>
                                                      child: 
                                                        (command.Pipeline
                                                          children: [
                                                            (C {<cat>} 
                                                              {(${ Id.VSub_Name PARTDIR) <'/'> 
                                                                (${ Id.VSub_Name PART)
                                                              }
                                                            )
                                                            (C {<cut>} {<-d>} {(SQ <'#'>)} {<-f>} {<2>})
                                                          ]
                                                          negated: F
                                                        )
                                                    )
                                                  )
                                                }
                                              spids: [1309]
                                            )
                                          ]
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:PARTENC)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ 
                                                    (command_sub
                                                      left_token: <Id.Left_Backtick '`'>
                                                      child: 
                                                        (command.Pipeline
                                                          children: [
                                                            (C {<cat>} 
                                                              {(${ Id.VSub_Name PARTDIR) <'/'> 
                                                                (${ Id.VSub_Name PART)
                                                              }
                                                            )
                                                            (C {<cut>} {<-d>} {(SQ <'#'>)} {<-f>} {<3>})
                                                          ]
                                                          negated: F
                                                        )
                                                    )
                                                  )
                                                }
                                              spids: [1341]
                                            )
                                          ]
                                        )
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (C {<Id.Lit_LBracket '['>} 
                                                      {(DQ (${ Id.VSub_Name PARTFS))} {<Id.Lit_Equals '='>} {(DQ <SWAP>)} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  ]
                                                )
                                              action: [
                                                (command.If
                                                  arms: [
                                                    (if_arm
                                                      cond: 
                                                        (condition.Shell
                                                          commands: [
                                                            (C {<Id.Lit_LBracket '['>} 
                                                              {(DQ (${ Id.VSub_Name PARTENC))} {<Id.Lit_Equals '='>} {(DQ <ON>)} {<Id.Lit_RBracket ']'>}
                                                            )
                                                          ]
                                                        )
                                                      action: [
                                                        (command.Simple
                                                          words: [
                                                            {<swapoff>}
                                                            {(${ Id.VSub_Name PARTDEV) <.eli>}
                                                          ]
                                                          redirects: [
                                                            (redir
                                                              op: <Id.Redir_Great '>'>
                                                              loc: (redir_loc.Fd fd:1)
                                                              arg: {<'/dev/null'>}
                                                            )
                                                            (redir
                                                              op: <Id.Redir_Great '2>'>
                                                              loc: (redir_loc.Fd fd:2)
                                                              arg: {<'/dev/null'>}
                                                            )
                                                          ]
                                                          do_fork: T
                                                        )
                                                      ]
                                                      spids: [1396 1415]
                                                    )
                                                  ]
                                                  else_action: [
                                                    (command.Simple
                                                      words: [{<swapoff>} {(${ Id.VSub_Name PARTDEV)}]
                                                      redirects: [
                                                        (redir
                                                          op: <Id.Redir_Great '>'>
                                                          loc: (redir_loc.Fd fd:1)
                                                          arg: {<'/dev/null'>}
                                                        )
                                                        (redir
                                                          op: <Id.Redir_Great '2>'>
                                                          loc: (redir_loc.Fd fd:2)
                                                          arg: {<'/dev/null'>}
                                                        )
                                                      ]
                                                      do_fork: T
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [1374 1393]
                                            )
                                          ]
                                        )
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (C {<Id.Lit_LBracket '['>} 
                                                      {(DQ ($ Id.VSub_DollarName '$PARTMNT'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <'/'>)} {<-a>} {(DQ (${ Id.VSub_Name PARTMNT))} 
                                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <none>)} {<-a>} {(DQ (${ Id.VSub_Name PARTFS))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <ZFS>)} 
                                                      {<Id.Lit_RBracket ']'>}
                                                    )
                                                  ]
                                                )
                                              action: [
                                                (command.Simple
                                                  words: [{<umount>} {<-f>} {(${ Id.VSub_Name PARTDEV)}]
                                                  redirects: [
                                                    (redir
                                                      op: <Id.Redir_Great '>'>
                                                      loc: (redir_loc.Fd fd:1)
                                                      arg: {<'/dev/null'>}
                                                    )
                                                    (redir
                                                      op: <Id.Redir_Great '2>'>
                                                      loc: (redir_loc.Fd fd:2)
                                                      arg: {<'/dev/null'>}
                                                    )
                                                  ]
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  words: [
                                                    {<umount>}
                                                    {<-f>}
                                                    {(${ Id.VSub_Name FSMNT) 
                                                      (${ Id.VSub_Name PARTMNT)
                                                    }
                                                  ]
                                                  redirects: [
                                                    (redir
                                                      op: <Id.Redir_Great '>'>
                                                      loc: (redir_loc.Fd fd:1)
                                                      arg: {<'/dev/null'>}
                                                    )
                                                    (redir
                                                      op: <Id.Redir_Great '2>'>
                                                      loc: (redir_loc.Fd fd:2)
                                                      arg: {<'/dev/null'>}
                                                    )
                                                  ]
                                                  do_fork: T
                                                )
                                              ]
                                              spids: [1459 1507]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                )
                                (command.Simple
                                  words: [{<umount>} {<-f>} {(${ Id.VSub_Name FSMNT)}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                    (redir
                                      op: <Id.Redir_Great '2>'>
                                      loc: (redir_loc.Fd fd:2)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              spids: [1220 1235]
                            )
                          ]
                        )
                      ]
                      spids: [1189 1208]
                    )
                  ]
                  else_action: [
                    (command.Simple
                      words: [{<chroot>} {(${ Id.VSub_Name FSMNT)} {<'/sbin/umount'>} {<-a>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<umount>} {<-f>} {(${ Id.VSub_Name FSMNT) <'/usr'>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<umount>} {<-f>} {(${ Id.VSub_Name FSMNT) <'/dev'>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<umount>} {<-f>} {(${ Id.VSub_Name FSMNT)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<sh>} {(${ Id.VSub_Name TMPDIR) <'/.upgrade-unmount'>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                )
                (command.Simple
                  words: [{<umount>} {(${ Id.VSub_Name CDMNT)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
              ]
            )
        )
      terminator: <Id.Op_Semi _>
    )
  ]
)