(command.CommandList
  children: [
    (command.ShFunction
      name_tok: <find_sbin_cmd>
      name: find_sbin_cmd
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [base]
              iterable: (for_iter.Words words:[{<'/'>} {<'/usr/'>} {<'/usr/local'>}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {<-e>}
                                        {($ Id.VSub_DollarName base) <'/sbin/'> ($ Id.VSub_Number 1)}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {($ Id.VSub_DollarName base) <'/sbin/'> ($ Id.VSub_Number 1)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                            )
                          ]
                          spids: [60 73]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'FDISK='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'FDISK='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FDISK='> name:FDISK)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    blame_tok: <which>
                    more_env: []
                    words: [{<which>} {<fdisk>}]
                    redirects: [
                      (Redir
                        op: <Id.Redir_Great '2>'>
                        loc: (redir_loc.Fd fd:2)
                        arg: {<'/dev/null'>}
                      )
                    ]
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'LSUSB='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'LSUSB='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LSUSB='> name:LSUSB)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    blame_tok: <which>
                    more_env: []
                    words: [{<which>} {<lsusb>}]
                    redirects: [
                      (Redir
                        op: <Id.Redir_Great '2>'>
                        loc: (redir_loc.Fd fd:2)
                        arg: {<'/dev/null'>}
                      )
                    ]
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'LSPCI='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'LSPCI='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LSPCI='> name:LSPCI)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    blame_tok: <which>
                    more_env: []
                    words: [{<which>} {<lspci>}]
                    redirects: [
                      (Redir
                        op: <Id.Redir_Great '2>'>
                        loc: (redir_loc.Fd fd:2)
                        arg: {<'/dev/null'>}
                      )
                    ]
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.Lit_LBracket '['>
          more_env: []
          words: [
            {<Id.Lit_LBracket '['>}
            {<-z>}
            {(DQ ($ Id.VSub_DollarName FDISK))}
            {<Id.Lit_RBracket ']'>}
          ]
          redirects: []
          do_fork: T
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'FDISK='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'FDISK='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FDISK='> name:FDISK)
              op: assign_op.Equal
              rhs: 
                {
                  (CommandSub
                    left_token: <Id.Left_Backtick '`'>
                    child: 
                      (command.Simple
                        blame_tok: <find_sbin_cmd>
                        more_env: []
                        words: [{<find_sbin_cmd>} {<fdisk>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Backtick_Right '`'>
                  )
                }
            )
          ]
          redirects: []
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.Lit_LBracket '['>
          more_env: []
          words: [
            {<Id.Lit_LBracket '['>}
            {<-z>}
            {(DQ ($ Id.VSub_DollarName LSUSB))}
            {<Id.Lit_RBracket ']'>}
          ]
          redirects: []
          do_fork: T
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'LSUSB='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'LSUSB='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LSUSB='> name:LSUSB)
              op: assign_op.Equal
              rhs: 
                {
                  (CommandSub
                    left_token: <Id.Left_Backtick '`'>
                    child: 
                      (command.Simple
                        blame_tok: <find_sbin_cmd>
                        more_env: []
                        words: [{<find_sbin_cmd>} {<lsusb>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Backtick_Right '`'>
                  )
                }
            )
          ]
          redirects: []
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.Lit_LBracket '['>
          more_env: []
          words: [
            {<Id.Lit_LBracket '['>}
            {<-z>}
            {(DQ ($ Id.VSub_DollarName LSPCI))}
            {<Id.Lit_RBracket ']'>}
          ]
          redirects: []
          do_fork: T
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'LSPCI='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'LSPCI='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LSPCI='> name:LSPCI)
              op: assign_op.Equal
              rhs: 
                {
                  (CommandSub
                    left_token: <Id.Left_Backtick '`'>
                    child: 
                      (command.Simple
                        blame_tok: <find_sbin_cmd>
                        more_env: []
                        words: [{<find_sbin_cmd>} {<lspci>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Backtick_Right '`'>
                  )
                }
            )
          ]
          redirects: []
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'============= Drives ============='>)}]
      redirects: []
      do_fork: T
    )
    (command.Pipeline
      children: [
        (command.Subshell
          left: <Id.Op_LParen _>
          child: 
            (command.CommandList
              children: [
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  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
                  children: [
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [{<Id.Lit_LBracket '['>} {<-e>} {<'/dev/cdrom'>} {<Id.Lit_RBracket ']'>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <readlink>
                          more_env: []
                          words: [{<readlink>} {<-f>} {<'/dev/cdrom'>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<'-d/'>} {<-f3>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                  ]
                  ops: [<Id.Op_DAmp _>]
                )
              ]
            )
          right: <Id.Right_Subshell _>
          redirects: []
        )
        (command.Simple blame_tok:<sort> more_env:[] words:[{<sort>}] redirects:[] do_fork:T)
        (command.Simple blame_tok:<uniq> more_env:[] words:[{<uniq>}] redirects:[] do_fork:T)
        (command.WhileUntil
          keyword: <Id.KW_While while>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <read>
                      more_env: []
                      words: [{<read>} {<disk>}]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          body: 
            (command.DoGroup
              left: <Id.KW_Do do>
              children: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {<-n>} {(DQ <'/dev/'> ($ Id.VSub_DollarName disk) <': '>)}]
                  redirects: []
                  do_fork: T
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<Id.KW_Bang '!'>}
                                    {<-r>}
                                    {<'/dev/'> ($ Id.VSub_DollarName disk)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'permission denied'>)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      spids: [270 284]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'size='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'size='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'size='> name:size)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <Id.VSub_DollarName '$FDISK'>
                                        more_env: []
                                        words: [
                                          {($ Id.VSub_DollarName FDISK)}
                                          {<-l>}
                                          {<'/dev/'> ($ Id.VSub_DollarName disk)}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <grep>
                                        more_env: []
                                        words: [{<grep>} {<Disk>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <cut>
                                        more_env: []
                                        words: [{<cut>} {<-d> (SQ <' '>)} {<-f3-4>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <tr>
                                        more_env: []
                                        words: [{<tr>} {<-d>} {<Id.Lit_Comma ','>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'rest='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'rest='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rest='> name:rest)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <'/sbin/hdparm'>
                                        more_env: []
                                        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
                                      )
                                      (command.Simple
                                        blame_tok: <grep>
                                        more_env: []
                                        words: [{<grep>} {<Model>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _>]
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'rest='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'rest='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rest='> name:rest)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    blame_tok: <echo>
                                    more_env: []
                                    words: [{<echo>} {($ Id.VSub_DollarName rest)}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ ($ Id.VSub_DollarName rest))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {<Id.KW_Bang '!'>}
                                        {<-z>}
                                        {(DQ ($ Id.VSub_DollarName size))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ <', Size='> ($ Id.VSub_DollarName size))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [382 397]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              right: <Id.KW_Done done>
            )
          redirects: []
        )
      ]
      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'============= CPUs ============='>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <grep>
      more_env: []
      words: [{<grep>} {(DQ <'model name'>)} {<'/proc/cpuinfo'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'============= MEM ============='>)}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'KiB='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'KiB='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KiB='> name:KiB)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (command.Simple
                        blame_tok: <grep>
                        more_env: []
                        words: [{<grep>} {<MemTotal>} {<'/proc/meminfo'>}]
                        redirects: []
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <tr>
                        more_env: []
                        words: [{<tr>} {<-s>} {(SQ <' '>)}]
                        redirects: []
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <cut>
                        more_env: []
                        words: [{<cut>} {<-d> (SQ <' '>)} {<-f2>}]
                        redirects: []
                        do_fork: T
                      )
                    ]
                    ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'MiB='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'MiB='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MiB='> name:MiB)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    blame_tok: <expr>
                    more_env: []
                    words: [{<expr>} {($ Id.VSub_DollarName KiB)} {<'/'>} {<1024>}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'round='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'round='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'round='> name:round)
          op: assign_op.Equal
          rhs: {<32>}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [
        {<echo>}
        {
          (DQ 
            (CommandSub
              left_token: <Id.Left_Backtick '`'>
              child: 
                (command.Simple
                  blame_tok: <expr>
                  more_env: []
                  words: [
                    {<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)}
                  ]
                  redirects: []
                  do_fork: T
                )
              right: <Id.Backtick_Right '`'>
            ) <' MiB'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'============= PCI ============='>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <Id.VSub_DollarName '$LSPCI'>
      more_env: []
      words: [{($ Id.VSub_DollarName LSPCI)} {<-tv>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'============= USB ============='>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <Id.VSub_DollarName '$LSUSB'>
      more_env: []
      words: [{($ Id.VSub_DollarName LSUSB)}]
      redirects: []
      do_fork: T
    )
  ]
)