(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH)
          op: assign_op.Equal
          rhs: {<'/sbin'> <Id.Lit_Colon ':'> <'/bin'> <Id.Lit_Colon ':'> <'/usr/bin'>}
          spids: [43]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FSCK_LOGFILE='> name:FSCK_LOGFILE)
          op: assign_op.Equal
          rhs: {<'/var/log/fsck/checkroot'>}
          spids: [50]
        )
      ]
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName FSCKFIX))} {<Id.Lit_RBracket ']'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FSCKFIX='> name:FSCKFIX)
              op: assign_op.Equal
              rhs: {<no>}
              spids: [63]
            )
          ]
          redirects: []
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName SULOGIN))} {<Id.Lit_RBracket ']'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SULOGIN='> name:SULOGIN)
              op: assign_op.Equal
              rhs: {<no>}
              spids: [76]
            )
          ]
          redirects: []
        )
      ]
    )
    (C {<.>} {<'/lib/init/vars.sh'>})
    (C {<.>} {<'/lib/lsb/init-functions'>})
    (C {<.>} {<'/lib/init/mount-functions.sh'>})
    (command.ShFunction
      name: do_start
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<trap>} {(DQ )} {<INT>})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName SULOGIN))} {<Id.Lit_Equals '='>} 
                  {<yes>} {<Id.Lit_RBracket ']'>}
                )
                (C {<sulogin>} {<-t>} {<30>} {($ Id.VSub_DollarName CONSOLE)})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KERNEL='> name:KERNEL)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<uname>} {<-s>})
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  spids: [158]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MACHINE='> name:MACHINE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<uname>} {<-m>})
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  spids: [168]
                )
              ]
              redirects: []
            )
            (C {<read_fstab>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ENABLE_SWAP='> name:ENABLE_SWAP)
                  op: assign_op.Equal
                  rhs: {<no>}
                  spids: [199]
                )
              ]
              redirects: []
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName KERNEL))}
              arms: [
                (case_arm
                  pat_list: [{<Linux>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName NOSWAP))} 
                                  {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName VERBOSE))} 
                                  {<Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<log_warning_msg>} 
                                  {(DQ <'Not activating swap as requested via bootoption noswap.'>)}
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'ENABLE_SWAP='>
                                      name: ENABLE_SWAP
                                    )
                                  op: assign_op.Equal
                                  rhs: {<no>}
                                  spids: [255]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [216 231]
                        )
                      ]
                      else_action: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName swap_on_lv))} 
                                      {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName VERBOSE))} 
                                      {<Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>}
                                    )
                                    (C {<log_warning_msg>} 
                                      {(DQ <'Not activating swap on logical volume.'>)}
                                    )
                                  ]
                                )
                              ]
                              spids: [262 277]
                            )
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} 
                                      {(DQ ($ Id.VSub_DollarName swap_on_file))} {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName VERBOSE))} 
                                      {<Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>}
                                    )
                                    (C {<log_warning_msg>} {(DQ <'Not activating swap on swapfile.'>)})
                                  ]
                                )
                              ]
                              spids: [301 316]
                            )
                          ]
                          else_action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'ENABLE_SWAP='>
                                      name: ENABLE_SWAP
                                    )
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                  spids: [343]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [212 213 353 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'ENABLE_SWAP='>
                              name: ENABLE_SWAP
                            )
                          op: assign_op.Equal
                          rhs: {<yes>}
                          spids: [360]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [356 357 364 -1]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ENABLE_SWAP))} 
                          {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName VERBOSE))} 
                                  {<Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<log_action_begin_msg>} {(DQ <'Activating swap'>)})
                            (command.Simple
                              words: [{<swapon>} {<-a>} {<-e>}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                                (redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (C {<log_action_end_msg>} {($ Id.VSub_QMark '?')})
                          ]
                          spids: [388 403]
                        )
                      ]
                      else_action: [
                        (C {<log_daemon_msg>} {(DQ <'Activating swap'>)})
                        (C {<swapon>} {<-a>} {<-v>})
                        (C {<log_end_msg>} {($ Id.VSub_QMark '?')})
                      ]
                      redirects: []
                    )
                  ]
                  spids: [370 385]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KERNEL='> name:KERNEL)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<uname>})
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  spids: [492]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName rootcheck))} 
                              {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>}
                            )
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName KERNEL))} 
                              {<Id.Lit_Equals '='>} {<Linux>} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ddev='> name:ddev)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: (C {<mountpoint>} {<-qx>} {($ Id.VSub_DollarName rootdev)})
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          spids: [532]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rdev='> name:rdev)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: (C {<mountpoint>} {<-d>} {<'/'>})
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          spids: [544]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ddev))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName rdev))} {<Id.Lit_RBracket ']'>}
                                    )
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ddev))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <'4:0'>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              ]
                            )
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (C {<Id.Lit_LBracket '['>} 
                                          {
                                            (DQ 
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: (C {<mountpoint>} {<-qx>} {<'/dev/root'>})
                                                right: <Id.Eof_RParen _>
                                              )
                                            )
                                          } {<Id.Lit_Equals '='>} {(DQ <'4:0'>)} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'rootdev='>
                                              name: rootdev
                                            )
                                          op: assign_op.Equal
                                          rhs: {<'/dev/root'>}
                                          spids: [620]
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [594 617]
                                )
                              ]
                              else_action: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.AndOr
                                              ops: [Id.Op_DAmp Id.Op_DAmp]
                                              children: [
                                                (C {<rm>} {<-f>} {<'/run/rootdev'>})
                                                (C {<mknod>} {<-m>} {<600>} {<'/run/rootdev'>} {<b>} 
                                                  {
                                                    (braced_var_sub
                                                      left: <Id.Left_DollarBrace '${'>
                                                      token: <Id.VSub_Name rdev>
                                                      var_name: rdev
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          op: <Id.VOp1_Percent '%'>
                                                          arg_word: {<':'> <Id.Lit_Other '*'>}
                                                        )
                                                      right: <Id.Right_DollarBrace '}'>
                                                    )
                                                  } 
                                                  {
                                                    (braced_var_sub
                                                      left: <Id.Left_DollarBrace '${'>
                                                      token: <Id.VSub_Name rdev>
                                                      var_name: rdev
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          op: <Id.VOp1_Pound '#'>
                                                          arg_word: {<Id.Lit_Other '*'> <':'>}
                                                        )
                                                      right: <Id.Right_DollarBrace '}'>
                                                    )
                                                  }
                                                )
                                                (C {<Id.Lit_LBracket '['>} {<-e>} {<'/run/rootdev'>} 
                                                  {<Id.Lit_RBracket ']'>}
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'rootdev='>
                                                  name: rootdev
                                                )
                                              op: assign_op.Equal
                                              rhs: {<'/run/rootdev'>}
                                              spids: [681]
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      spids: [627 678]
                                    )
                                  ]
                                  else_action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'rootfatal='>
                                              name: rootfatal
                                            )
                                          op: assign_op.Equal
                                          rhs: {<yes>}
                                          spids: [688]
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [556 591]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [500 529]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName rootfatal))} 
                          {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (C {<log_failure_msg>} 
                      {
                        (DQ <'The device node '> ($ Id.VSub_DollarName rootdev) 
                          <' for the root filesystem is missing or incorrect \n'> <'or there is no entry for the root filesystem listed in /etc/fstab. \n'> 
                          <'The system is also unable to create a temporary node in /run. \n'> <'This means you have to fix the problem manually.'>
                        )
                      }
                    )
                    (C {<log_warning_msg>} 
                      {
                        (DQ <'A maintenance shell will now be started. \n'> 
                          <'CONTROL-D will terminate this shell and restart the system.'>
                        )
                      }
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Pipeline
                                  children: [(C {<sulogin>} {($ Id.VSub_DollarName CONSOLE)})]
                                  negated: T
                                  stderr_indices: []
                                )
                              ]
                            )
                          action: [
                            (C {<log_failure_msg>} 
                              {
                                (DQ <'Attempt to start maintenance shell failed. \n'> 
                                  <'Will restart in 5 seconds.'>
                                )
                              }
                            )
                            (C {<sleep>} {<5>})
                          ]
                          spids: [759 768]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName VERBOSE))} 
                          {<Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<log_action_msg>} {(DQ <'Will now restart'>)})
                      ]
                    )
                    (C {<reboot>} {<-f>})
                  ]
                  spids: [717 732]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FSCKCODE='> name:FSCKCODE)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [875]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<-e>} {<'/run/initramfs/fsck-root'>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rootcheck='> name:rootcheck)
                          op: assign_op.Equal
                          rhs: {<no>}
                          spids: [894]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [880 891]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: (condition.Shell commands:[(C {<is_fastboot_active>})])
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName rootcheck))} 
                          {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<log_warning_msg>} 
                          {(DQ <'Fast boot enabled, so skipping root file system check.'>)}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rootcheck='> name:rootcheck)
                          op: assign_op.Equal
                          rhs: {<no>}
                          spids: [931]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [902 907]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          words: [{<which>} {<findmnt>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                            (redir
                              op: <Id.Redir_GreatAnd '2>&'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<1>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} 
                                  {
                                    (DQ 
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: (C {<findmnt>} {<-f>} {<-n>} {<-o>} {<FSTYPE>} {<'/'>})
                                        right: <Id.Eof_RParen _>
                                      )
                                    )
                                  } {<Id.Lit_Equals '='>} {(DQ <btrfs>)} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName rootcheck))} 
                                  {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<log_warning_msg>} 
                                  {(DQ <'btrfs root detected, so skipping root file system check.'>)}
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'rootcheck='>
                                      name: rootcheck
                                    )
                                  op: assign_op.Equal
                                  rhs: {<no>}
                                  spids: [1008]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [955 984]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [939 952]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName rootcheck))} 
                          {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.AndOr
                                  ops: [Id.Op_DAmp Id.Op_DAmp]
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (C {<mount>} {<-n>} {<-o>} {<remount> <Id.Lit_Comma ','> <ro>} 
                                          {($ Id.VSub_DollarName rootdev)} {<'/'>}
                                        )
                                      ]
                                      negated: T
                                      stderr_indices: []
                                    )
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          words: [
                                            {<mount>}
                                            {<-n>}
                                            {<-o>}
                                            {<remount> <Id.Lit_Comma ','> <ro>}
                                            {<-t>}
                                            {<dummytype>}
                                            {($ Id.VSub_DollarName rootdev)}
                                            {<'/'>}
                                          ]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_Great '2>'>
                                              loc: (redir_loc.Fd fd:2)
                                              arg: {<'/dev/null'>}
                                            )
                                          ]
                                          more_env: []
                                          do_fork: T
                                        )
                                      ]
                                      negated: T
                                      stderr_indices: []
                                    )
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          words: [
                                            {<mount>}
                                            {<-n>}
                                            {<-o>}
                                            {<remount> <Id.Lit_Comma ','> <ro>}
                                            {<'/'>}
                                          ]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_Great '2>'>
                                              loc: (redir_loc.Fd fd:2)
                                              arg: {<'/dev/null'>}
                                            )
                                          ]
                                          more_env: []
                                          do_fork: T
                                        )
                                      ]
                                      negated: T
                                      stderr_indices: []
                                    )
                                  ]
                                )
                              ]
                            )
                          action: [
                            (C {<log_failure_msg>} 
                              {
                                (DQ 
                                  <
'Cannot check root file system because it is not mounted read-only.'
                                  >
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'rootcheck='>
                                      name: rootcheck
                                    )
                                  op: assign_op.Equal
                                  rhs: {<no>}
                                  spids: [1168]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1089 1158]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [1019 1034]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName rootcheck))} 
                          {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (C {<Id.Lit_LBracket '['>} {<-f>} {<'/forcefsck'>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                    (C {<grep>} {<-q>} {<-s>} {<-w>} {<-i>} {(DQ <forcefsck>)} 
                                      {<'/proc/cmdline'>}
                                    )
                                  ]
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'force='> name:force)
                                  op: assign_op.Equal
                                  rhs: {(DQ <-f>)}
                                  spids: [1241]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1209 1238]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'force='> name:force)
                              op: assign_op.Equal
                              rhs: {(DQ )}
                              spids: [1250]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName FSCKFIX))} 
                                  {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fix='> name:fix)
                                  op: assign_op.Equal
                                  rhs: {(DQ <-y>)}
                                  spids: [1277]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1259 1274]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fix='> name:fix)
                              op: assign_op.Equal
                              rhs: {(DQ <-a>)}
                              spids: [1286]
                            )
                          ]
                          redirects: []
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'spinner='> name:spinner)
                          op: assign_op.Equal
                          rhs: {(DQ <-C>)}
                          spids: [1296]
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName TERM))}
                      arms: [
                        (case_arm
                          pat_list: [{<dumb>} {<network>} {<unknown>} {(DQ )}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'spinner='>
                                      name: spinner
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ )}
                                  spids: [1322]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1311 1319 1326 -1]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} 
                                  {(DQ (${ Id.VSub_Name KERNEL) <':'> (${ Id.VSub_Name MACHINE))} {<Id.Lit_Equals '='>} {<Linux> <Id.Lit_Colon ':'> <s390x>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'spinner='>
                                      name: spinner
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ )}
                                  spids: [1362]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1336 1359]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName VERBOSE))} 
                                  {<Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<log_action_begin_msg>} {(DQ <'Checking root file system'>)})
                            (C {<logsave>} {<-s>} {($ Id.VSub_DollarName FSCK_LOGFILE)} {<fsck>} 
                              {($ Id.VSub_DollarName spinner)} {($ Id.VSub_DollarName force)} {($ Id.VSub_DollarName fix)} {<-t>} {($ Id.VSub_DollarName roottype)} 
                              {($ Id.VSub_DollarName rootdev)}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'FSCKCODE='>
                                      name: FSCKCODE
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '?')}
                                  spids: [1418]
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(DQ ($ Id.VSub_DollarName FSCKCODE))} {<Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  action: [(C {<log_action_end_msg>} {<0>})]
                                  spids: [1422 1437]
                                )
                              ]
                              else_action: [
                                (C {<log_action_end_msg>} {<1>} 
                                  {(DQ <'code '> ($ Id.VSub_DollarName FSCKCODE))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1372 1387]
                        )
                      ]
                      else_action: [
                        (C {<log_daemon_msg>} {(DQ <'Will now check root file system'>)})
                        (C {<logsave>} {<-s>} {($ Id.VSub_DollarName FSCK_LOGFILE)} {<fsck>} 
                          {($ Id.VSub_DollarName spinner)} {($ Id.VSub_DollarName force)} {($ Id.VSub_DollarName fix)} {<-V>} {<-t>} 
                          {($ Id.VSub_DollarName roottype)} {($ Id.VSub_DollarName rootdev)}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FSCKCODE='> name:FSCKCODE)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_QMark '?')}
                              spids: [1494]
                            )
                          ]
                          redirects: []
                        )
                        (C {<log_end_msg>} {($ Id.VSub_DollarName FSCKCODE)})
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1191 1206]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName FSCKCODE))} {<-eq>} {<32>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [(C {<log_warning_msg>} {(DQ <'File system check was interrupted by user'>)})]
                  spids: [1542 1557]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName FSCKCODE))} {<-gt>} {<3>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (C {<log_failure_msg>} 
                      {
                        (DQ 
                          <
'An automatic file system check (fsck) of the root filesystem failed. \n'
                          > <'A manual fsck must be performed, then the system restarted. \n'> 
                          <'The fsck should be performed in maintenance mode with the \n'> <'root filesystem mounted in read-only mode.'>
                        )
                      }
                    )
                    (C {<log_warning_msg>} 
                      {
                        (DQ <'The root filesystem is currently mounted in read-only mode. \n'> 
                          <'A maintenance shell will now be started. \n'> <'After performing system maintenance, press CONTROL-D \n'> 
                          <'to terminate the maintenance shell and restart the system.'>
                        )
                      }
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Pipeline
                                  children: [(C {<sulogin>} {($ Id.VSub_DollarName CONSOLE)})]
                                  negated: T
                                  stderr_indices: []
                                )
                              ]
                            )
                          action: [
                            (C {<log_failure_msg>} 
                              {
                                (DQ <'Attempt to start maintenance shell failed. \n'> 
                                  <'Will restart in 5 seconds.'>
                                )
                              }
                            )
                            (C {<sleep>} {<5>})
                          ]
                          spids: [1617 1626]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName VERBOSE))} 
                          {<Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<log_action_msg>} {(DQ <'Will now restart'>)})
                      ]
                    )
                    (C {<reboot>} {<-f>})
                  ]
                  spids: [1567 1582]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName FSCKCODE))} {<-gt>} {<1>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (C {<log_failure_msg>} 
                      {
                        (DQ <'The file system check corrected errors on the root partition \n'> 
                          <'but requested that the system be restarted.'>
                        )
                      }
                    )
                    (C {<log_warning_msg>} {(DQ <'The system will be restarted in 5 seconds.'>)})
                    (C {<sleep>} {<5>})
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName VERBOSE))} 
                          {<Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<log_action_msg>} {(DQ <'Will now restart'>)})
                      ]
                    )
                    (C {<reboot>} {<-f>})
                  ]
                  spids: [1671 1686]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (command.Simple
                              words: [
                                {<mount>}
                                {<-n>}
                                {<-o>}
                                {<remount> <Id.Lit_Comma ','> ($ Id.VSub_DollarName rootopts) 
                                  <Id.Lit_Comma ','> ($ Id.VSub_DollarName rootmode)
                                }
                                {($ Id.VSub_DollarName fstabroot)}
                                {<'/'>}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (C {<mount>} {<-n>} {<-o>} 
                      {<remount> <Id.Lit_Comma ','> ($ Id.VSub_DollarName rootopts) <Id.Lit_Comma ','> 
                        ($ Id.VSub_DollarName rootmode)
                      } {<'/'>}
                    )
                  ]
                  spids: [1763 1787]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName rootmode))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <ro>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<mtab_migrate>})]
                  spids: [1821 1839]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          ops: [Id.Op_DAmp Id.Op_DAmp]
                          children: [
                            (C {<selinux_enabled>})
                            (C {<Id.Lit_LBracket '['>} {<-x>} {<'/sbin/restorecon'>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                            (C {<Id.Lit_LBracket '['>} {<-r>} {<'/etc/mtab'>} {<Id.Lit_RBracket ']'>})
                          ]
                        )
                      ]
                    )
                  action: [(C {<restorecon>} {<'/etc/mtab'>})]
                  spids: [1849 1874]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<rm>} {<-f>} {<'/run/rootdev'>})
            (C {<'/etc/init.d/mountkernfs.sh'>} {<reload>})
            (C {<'/etc/init.d/mountdevsubfs.sh'>} {<reload>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: do_status
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rootrw='> name:rootrw)
                  op: assign_op.Equal
                  rhs: {<false>}
                  spids: [1947]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'swapon='> name:swapon)
                  op: assign_op.Equal
                  rhs: {<false>}
                  spids: [1951]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} {<'/etc/mtab'>} {<Id.Lit_RBracket ']'>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (C {<grep>} {(DQ <' / '>)} {<'/etc/mtab'>})
                                        (C {<grep>} {<-q>} {<rw>})
                                      ]
                                      negated: F
                                      stderr_indices: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rootrw='> name:rootrw)
                                  op: assign_op.Equal
                                  rhs: {<true>}
                                  spids: [1992]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1970 1989]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [1955 1967]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} {<'/proc/swaps'>} {<Id.Lit_RBracket ']'>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} 
                                      {
                                        (DQ 
                                          (command_sub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (command.Pipeline
                                                children: [
                                                  (C {<cat>} {<'/proc/swaps'>})
                                                  (C {<grep>} {<-v>} {<Id.Lit_Other '^'> <Filename>})
                                                ]
                                                negated: F
                                                stderr_indices: []
                                              )
                                            right: <Id.Eof_RParen _>
                                          )
                                        )
                                      } {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'swapon='> name:swapon)
                                  op: assign_op.Equal
                                  rhs: {<true>}
                                  spids: [2044]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2017 2041]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [2002 2014]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {<true>} {<Id.Lit_Equals '='>} 
                                  {(DQ ($ Id.VSub_DollarName rootrw))} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {<true>} {<Id.Lit_Equals '='>} 
                                  {(DQ ($ Id.VSub_DollarName swapon))} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [2054 2084]
                )
              ]
              else_action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<4>})]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_Number 1))}
      arms: [
        (case_arm
          pat_list: [{<start>} {(DQ )}]
          action: [(C {<do_start>})]
          spids: [2114 2118 2124 -1]
        )
        (case_arm
          pat_list: [{<restart>} {<reload>} {<force-reload>}]
          action: [
            (command.Simple
              words: [{<echo>} {(DQ <'Error: argument \''> ($ Id.VSub_Number 1) <'\' not supported'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<3>})
          ]
          spids: [2127 2132 2152 -1]
        )
        (case_arm pat_list:[{<stop>}] action:[] spids:[2155 2156 2163 -1])
        (case_arm
          pat_list: [{<status>}]
          action: [
            (C {<do_status>})
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_QMark '?')}
            )
          ]
          spids: [2166 2167 2178 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.Simple
              words: [{<echo>} {(DQ <'Usage: checkroot.sh [start|stop]'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<3>})
          ]
          spids: [2181 2182 2200 -1]
        )
      ]
      redirects: []
    )
    (C {<Id.Lit_Colon ':'>})
  ]
)