(command.CommandList
  children: [
    (command.ShFunction
      name: find_sbin_cmd
      body: 
        (command.BraceGroup
          children: [
            (command.ForEach
              iter_name: base
              iter_words: [{</>} {</usr/>} {</usr/local>}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (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 '`'>
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Simple
                        words: [{<which>} {<fdisk>}]
                        redirects: [
                          (redir
                            op: <Id.Redir_Great '2>'>
                            loc: (redir_loc.Fd fd:2)
                            arg: {</dev/null>}
                          )
                        ]
                      )
                    ]
                  )
              )
            }
          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 '`'>
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Simple
                        words: [{<which>} {<lsusb>}]
                        redirects: [
                          (redir
                            op: <Id.Redir_Great '2>'>
                            loc: (redir_loc.Fd fd:2)
                            arg: {</dev/null>}
                          )
                        ]
                      )
                    ]
                  )
              )
            }
          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 '`'>
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Simple
                        words: [{<which>} {<lspci>}]
                        redirects: [
                          (redir
                            op: <Id.Redir_Great '2>'>
                            loc: (redir_loc.Fd fd:2)
                            arg: {</dev/null>}
                          )
                        ]
                      )
                    ]
                  )
              )
            }
          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 '`'>
                    command_list: (command.CommandList children:[(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 '`'>
                    command_list: (command.CommandList children:[(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 '`'>
                    command_list: (command.CommandList children:[(C {<find_sbin_cmd>} {<lspci>})])
                  )
                }
              spids: [183]
            )
          ]
        )
      ]
    )
    (C {<echo>} {(DQ <'============= Drives ============='>)})
    (command.Pipeline
      children: [
        (command.Subshell
          command_list: 
            (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>}
                    )
                  ]
                )
                (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: [(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: [
                        (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 '`'>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (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 '`'>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (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>}
                                              )
                                            ]
                                          )
                                          (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 '`'>
                                command_list: 
                                  (command.CommandList
                                    children: [(C {<echo>} {($ Id.VSub_DollarName '$rest')})]
                                  )
                              )
                            }
                          spids: [360]
                        )
                      ]
                    )
                    (C {<echo>} {<-n>} {(DQ ($ Id.VSub_DollarName '$rest'))})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (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 '`'>
                command_list: 
                  (command.CommandList
                    children: [
                      (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 '`'>
                command_list: 
                  (command.CommandList
                    children: [(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 '`'>
            command_list: 
              (command.CommandList
                children: [
                  (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')})
  ]
)