(command.CommandList
  children: [
    (command.ShFunction
      name: find_sbin_cmd
      body: 
        (BraceGroup
          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]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name 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'>}
                      )
                    ]
                    do_fork: T
                  )
              )
            }
          spids: [93]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name 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'>}
                      )
                    ]
                    do_fork: T
                  )
              )
            }
          spids: [105]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name 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'>}
                      )
                    ]
                    do_fork: T
                  )
              )
            }
          spids: [117]
        )
      ]
    )
    (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 name:FDISK)
              op: assign_op.Equal
              rhs: 
                {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<find_sbin_cmd>} {<fdisk>}))}
              spids: [141]
            )
          ]
        )
      ]
    )
    (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 name:LSUSB)
              op: assign_op.Equal
              rhs: 
                {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<find_sbin_cmd>} {<lsusb>}))}
              spids: [162]
            )
          ]
        )
      ]
    )
    (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 name:LSPCI)
              op: assign_op.Equal
              rhs: 
                {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<find_sbin_cmd>} {<lspci>}))}
              spids: [183]
            )
          ]
        )
      ]
    )
    (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'>}
                    )
                  ]
                  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
                    )
                  ]
                )
              ]
            )
        )
        (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 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
                                  )
                              )
                            }
                          spids: [300]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name 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'>}
                                          )
                                        ]
                                        do_fork: T
                                      )
                                      (C {<grep>} {<Model>})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [338]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:rest)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<echo>} {($ Id.VSub_DollarName '$rest')})
                              )
                            }
                          spids: [360]
                        )
                      ]
                    )
                    (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>})]
                    )
                  ]
                )
              ]
            )
        )
      ]
      negated: F
    )
    (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 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
                  )
              )
            }
          spids: [459]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MiB)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {<expr>} {($ Id.VSub_DollarName '$KiB')} {<'/'>} {<1024>})
              )
            }
          spids: [491]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:round)
          op: assign_op.Equal
          rhs: {<32>}
          spids: [513]
        )
      ]
    )
    (C {<echo>} 
      {
        (DQ 
          (command_sub
            left_token: <Id.Left_Backtick '`'>
            child: 
              (C {<expr>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\('>)} 
                {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\('>)} {($ Id.VSub_DollarName '$MiB')} {<'/'>} {($ Id.VSub_DollarName '$round')} 
                {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'>)} {<Id.Lit_Other '+'>} {<1>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'>)} 
                {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'>)} {($ Id.VSub_DollarName '$round')}
              )
          ) <' MiB'>
        )
      }
    )
    (C {<echo>} {(DQ <'============= PCI ============='>)})
    (C {($ Id.VSub_DollarName '$LSPCI')} {<-tv>})
    (C {<echo>} {(DQ <'============= USB ============='>)})
    (C {($ Id.VSub_DollarName '$LSUSB')})
  ]
)