(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {(DQ ($ Id.VSub_Number '$1'))} 
                  {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.Simple
              words: [{<echo>} {(DQ <'usage: gen_initramfs_list.sh dirname'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [4 18]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LEN)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [(C {<echo>} {($ Id.VSub_Number '$1')}) (C {<wc>} {<-c>})]
                    negated: F
                  )
              )
            }
          spids: [38]
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {<find>} {(DQ ($ Id.VSub_Number '$1'))})
        (command.WhileUntil
          keyword: <Id.KW_While while>
          cond: (condition.Shell commands:[(C {<read>} {<i>})])
          body: 
            (command.DoGroup
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:PERM)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<stat>} {<-c>} {<Id.Lit_Other '%'> <a>} 
                                {(DQ ($ Id.VSub_DollarName '$i'))}
                              )
                          )
                        }
                      spids: [69]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:NAME)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Pipeline
                                  children: [
                                    (C {<echo>} {($ Id.VSub_DollarName '$i')})
                                    (C {<cut>} {<-b>} {(${ Id.VSub_Name LEN) <->})
                                  ]
                                  negated: F
                                )
                            )
                          )
                        }
                      spids: [84]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$NAME'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Continue continue>)
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<-L>} {(DQ ($ Id.VSub_DollarName '$i'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (C {<echo>} 
                          {
                            (DQ <'slink '> ($ Id.VSub_DollarName '$NAME') <' '> 
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: (C {<readlink>} {(DQ ($ Id.VSub_DollarName '$i'))})
                              ) <' '> ($ Id.VSub_DollarName '$PERM') <' 0 0'>
                            )
                          }
                        )
                      ]
                      spids: [122 135]
                    )
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName '$i'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (C {<echo>} 
                          {
                            (DQ <'file '> ($ Id.VSub_DollarName '$NAME') <' '> 
                              ($ Id.VSub_DollarName '$i') <' '> ($ Id.VSub_DollarName '$PERM') <' 0 0'>
                            )
                          }
                        )
                      ]
                      spids: [157 170]
                    )
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ ($ Id.VSub_DollarName '$i'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (C {<echo>} 
                          {
                            (DQ <'dir '> ($ Id.VSub_DollarName '$NAME') <' '> 
                              ($ Id.VSub_DollarName '$PERM') <' 0 0'>
                            )
                          }
                        )
                      ]
                      spids: [186 199]
                    )
                  ]
                )
              ]
            )
        )
      ]
      negated: F
    )
  ]
)