(command.CommandList
  children: [
    (command.ShFunction
      name: find_sbin_cmd
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              iter_names: [base]
              iterable: (for_iter.Words words:[{<'/'>} {<'/usr/'>} {<'/usr/local'>}])
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-e>} 
                                      {($ Id.VSub_DollarName base) <'/sbin/'> ($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} {($ Id.VSub_DollarName base) <'/sbin/'> ($ Id.VSub_Number 1)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                            )
                          ]
                          spids: [60 73]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FDISK='> name:FDISK)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    words: [{<which>} {<fdisk>}]
                    redirects: [
                      (redir
                        op: <Id.Redir_Great '2>'>
                        loc: (redir_loc.Fd fd:2)
                        arg: {<'/dev/null'>}
                      )
                    ]
                    more_env: []
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [93]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LSUSB='> name:LSUSB)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    words: [{<which>} {<lsusb>}]
                    redirects: [
                      (redir
                        op: <Id.Redir_Great '2>'>
                        loc: (redir_loc.Fd fd:2)
                        arg: {<'/dev/null'>}
                      )
                    ]
                    more_env: []
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [105]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LSPCI='> name:LSPCI)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    words: [{<which>} {<lspci>}]
                    redirects: [
                      (redir
                        op: <Id.Redir_Great '2>'>
                        loc: (redir_loc.Fd fd:2)
                        arg: {<'/dev/null'>}
                      )
                    ]
                    more_env: []
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [117]
        )
      ]
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName FDISK))} {<Id.Lit_RBracket ']'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FDISK='> name:FDISK)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: <Id.Left_Backtick '`'>
                    child: (C {<find_sbin_cmd>} {<fdisk>})
                    right: <Id.Backtick_Right '`'>
                  )
                }
              spids: [141]
            )
          ]
          redirects: []
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName LSUSB))} {<Id.Lit_RBracket ']'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LSUSB='> name:LSUSB)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: <Id.Left_Backtick '`'>
                    child: (C {<find_sbin_cmd>} {<lsusb>})
                    right: <Id.Backtick_Right '`'>
                  )
                }
              spids: [162]
            )
          ]
          redirects: []
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName LSPCI))} {<Id.Lit_RBracket ']'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LSPCI='> name:LSPCI)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: <Id.Left_Backtick '`'>
                    child: (C {<find_sbin_cmd>} {<lspci>})
                    right: <Id.Backtick_Right '`'>
                  )
                }
              spids: [183]
            )
          ]
          redirects: []
        )
      ]
    )
    (C {<echo>} {(DQ <'============= Drives ============='>)})
    (command.Pipeline
      children: [
        (command.Subshell
          child: 
            (command.CommandList
              children: [
                (command.Simple
                  words: [{<sed>} {<-n>} {(SQ <'s/.* \\([hs]d[a-f]$\\)/\\1/p'>)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {<'/proc/partitions'>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {<Id.Lit_LBracket '['>} {<-e>} {<'/dev/cdrom'>} {<Id.Lit_RBracket ']'>})
                    (command.Pipeline
                      children: [(C {<readlink>} {<-f>} {<'/dev/cdrom'>}) (C {<cut>} {<'-d/'>} {<-f3>})]
                      negated: F
                      stderr_indices: []
                    )
                  ]
                )
              ]
            )
          redirects: []
        )
        (C {<sort>})
        (C {<uniq>})
        (command.WhileUntil
          keyword: <Id.KW_While while>
          cond: 
            (condition.Shell
              commands: [(command.Sentence child:(C {<read>} {<disk>}) terminator:<Id.Op_Semi _>)]
            )
          body: 
            (command.DoGroup
              children: [
                (C {<echo>} {<-n>} {(DQ <'/dev/'> ($ Id.VSub_DollarName disk) <': '>)})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-r>} 
                                  {<'/dev/'> ($ Id.VSub_DollarName disk)} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [(C {<echo>} {(DQ <'permission denied'>)})]
                      spids: [270 284]
                    )
                  ]
                  else_action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'size='> name:size)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {($ Id.VSub_DollarName FDISK)} {<-l>} 
                                        {<'/dev/'> ($ Id.VSub_DollarName disk)}
                                      )
                                      (C {<grep>} {<Disk>})
                                      (C {<cut>} {<-d> (SQ <' '>)} {<-f3-4>})
                                      (C {<tr>} {<-d>} {<Id.Lit_Comma ','>})
                                    ]
                                    negated: F
                                    stderr_indices: []
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [300]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rest='> name:rest)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        words: [
                                          {<'/sbin/hdparm'>}
                                          {<-i>}
                                          {<'/dev/'> ($ Id.VSub_DollarName disk)}
                                        ]
                                        redirects: [
                                          (redir
                                            op: <Id.Redir_Great '2>'>
                                            loc: (redir_loc.Fd fd:2)
                                            arg: {<'/dev/null'>}
                                          )
                                        ]
                                        more_env: []
                                        do_fork: T
                                      )
                                      (C {<grep>} {<Model>})
                                    ]
                                    negated: F
                                    stderr_indices: []
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [338]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rest='> name:rest)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<echo>} {($ Id.VSub_DollarName rest)})
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          spids: [360]
                        )
                      ]
                      redirects: []
                    )
                    (C {<echo>} {<-n>} {(DQ ($ Id.VSub_DollarName rest))})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} 
                                      {(DQ ($ Id.VSub_DollarName size))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<echo>} {(DQ <', Size='> ($ Id.VSub_DollarName size))})]
                          spids: [382 397]
                        )
                      ]
                      else_action: [(C {<echo>})]
                      redirects: []
                    )
                  ]
                  redirects: []
                )
              ]
            )
          redirects: []
        )
      ]
      negated: F
      stderr_indices: []
    )
    (C {<echo>} {(DQ <'============= CPUs ============='>)})
    (C {<grep>} {(DQ <'model name'>)} {<'/proc/cpuinfo'>})
    (C {<echo>} {(DQ <'============= MEM ============='>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KiB='> name:KiB)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<grep>} {<MemTotal>} {<'/proc/meminfo'>})
                      (C {<tr>} {<-s>} {(SQ <' '>)})
                      (C {<cut>} {<-d> (SQ <' '>)} {<-f2>})
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [459]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MiB='> name:MiB)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {<expr>} {($ Id.VSub_DollarName KiB)} {<'/'>} {<1024>})
                right: <Id.Backtick_Right '`'>
              )
            }
          spids: [491]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'round='> name:round)
          op: assign_op.Equal
          rhs: {<32>}
          spids: [513]
        )
      ]
      redirects: []
    )
    (C {<echo>} 
      {
        (DQ 
          (command_sub
            left_token: <Id.Left_Backtick '`'>
            child: 
              (C {<expr>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\('> ch:'(')} 
                {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\('> ch:'(')} {($ Id.VSub_DollarName MiB)} {<'/'>} {($ Id.VSub_DollarName round)} 
                {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'> ch:')')} {<Id.Lit_Other '+'>} {<1>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'> ch:')')} 
                {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'> ch:'*')} {($ Id.VSub_DollarName round)}
              )
            right: <Id.Backtick_Right '`'>
          ) <' MiB'>
        )
      }
    )
    (C {<echo>} {(DQ <'============= PCI ============='>)})
    (C {($ Id.VSub_DollarName LSPCI)} {<-tv>})
    (C {<echo>} {(DQ <'============= USB ============='>)})
    (C {($ Id.VSub_DollarName LSUSB)})
  ]
)