(command.CommandList
  children: [
    (C {<set>} {<-e>})
    (command.ShFunction
      name: usage
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 84
                      stdin_parts: [
                        <'Usage:\n'>
                        ($ Id.VSub_Number '$0')
                        <' [-o <file>] [-u <uid>] [-g <gid>] {-d | <cpio_source>} ...\n'>
                        <'\t-o <file>      Create compressed initramfs file named <file> using\n'>
                        <'\t\t       gen_init_cpio and compressor depending on the extension\n'>
                        <'\t-u <uid>       User ID to map to user ID 0 (root).\n'>
                        <'\t\t       <uid> is only meaningful if <cpio_source> is a\n'>
                        <'\t\t       directory.  '>
                        <Id.Right_DoubleQuote '"'>
                        <squash>
                        <Id.Right_DoubleQuote '"'>
                        <' forces all files to uid 0.\n'>
                        <'\t-g <gid>       Group ID to map to group ID 0 (root).\n'>
                        <'\t\t       <gid> is only meaningful if <cpio_source> is a\n'>
                        <'\t\t       directory.  '>
                        <Id.Right_DoubleQuote '"'>
                        <squash>
                        <Id.Right_DoubleQuote '"'>
                        <' forces all files to gid 0.\n'>
                        <'\t<cpio_source>  File list or directory for cpio archive.\n'>
                        <'\t\t       If <cpio_source> is a .cpio file it will be used\n'>
                        <'\t\t       as direct input to initramfs.\n'>
                        <'\t-d             Output the default cpio list.\n'>
                        <'\n'>
                        <'All options except -o and -l may be repeated and are interpreted\n'>
                        <'sequentially and immediately.  -u and -g states are preserved across\n'>
                        <'<cpio_source> options so an explicit '>
                        <Id.Right_DoubleQuote '"'>
                        <'-u 0 -g 0'>
                        <Id.Right_DoubleQuote '"'>
                        <' is required\n'>
                        <'to reset the root/group mapping.\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: field
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<shift>} {($ Id.VSub_Number '$1')})
              terminator: <Id.Op_Semi _>
            )
            (C {<echo>} {($ Id.VSub_Number '$1')})
          ]
        )
    )
    (command.ShFunction
      name: list_default_initramfs
      body: (BraceGroup children:[(C {<Id.Lit_Colon ':'>})])
    )
    (command.ShFunction
      name: default_initramfs
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 156
                      stdin_parts: [
                        <'# This is a very simple, default initramfs\n'>
                        <'\n'>
                        <'dir /dev 0755 0 0\n'>
                        <'nod /dev/console 0600 0 0 c 5 1\n'>
                        <'dir /root 0700 0 0\n'>
                        <'# file /kinit usr/kinit/kinit 0755 0 0\n'>
                        <'# slink /init kinit 0755 0 0\n'>
                      ]
                    )
                )
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name output)}
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: filetype
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'argv1='> (DQ ($ Id.VSub_Number '$1'))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-L>} {(DQ (${ Id.VSub_Name argv1))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(DQ <slink>)})]
                  spids: [180 195]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ (${ Id.VSub_Name argv1))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(DQ <file>)})]
                  spids: [205 220]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ (${ Id.VSub_Name argv1))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(DQ <dir>)})]
                  spids: [230 245]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-b>} {(DQ (${ Id.VSub_Name argv1))} {<-o>} {<-c>} 
                              {(DQ (${ Id.VSub_Name argv1))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(DQ <nod>)})]
                  spids: [255 280]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-p>} {(DQ (${ Id.VSub_Name argv1))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(DQ <pipe>)})]
                  spids: [290 305]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-S>} {(DQ (${ Id.VSub_Name argv1))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(DQ <sock>)})]
                  spids: [315 330]
                )
              ]
              else_action: [(C {<echo>} {(DQ <invalid>)})]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: list_print_mtime
      body: (BraceGroup children:[(C {<Id.Lit_Colon ':'>})])
    )
    (command.ShFunction
      name: print_mtime
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'my_mtime='> (DQ <0>)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_Number '$1'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:my_mtime)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<find>} {(DQ ($ Id.VSub_Number '$1'))} {<-printf>} 
                                        {(DQ <'%T@'> <Id.Lit_BadBackslash '\\'> <n>)}
                                      )
                                      (C {<sort>} {<-r>})
                                      (C {<head>} {<-n>} {<1>})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [404]
                        )
                      ]
                    )
                  ]
                  spids: [388 401]
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ <'# Last modified: '> (${ Id.VSub_Name my_mtime))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name output)}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(DQ )}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name output)}
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: list_parse
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-L>} {(DQ ($ Id.VSub_Number '$1'))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<echo>} 
                  {
                    (DQ ($ Id.VSub_Number '$1') <' '> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\\\'>
                      )
                    )
                  }
                )
                (C {<Id.Lit_Colon ':'>})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: parse
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'location='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} 
              {<Id.Lit_VarLike 'name='> 
                (DQ <'/'> 
                  (braced_var_sub
                    token: <Id.VSub_Name location>
                    suffix_op: 
                      (suffix_op.Unary
                        tok: <Id.VOp1_Pound '#'>
                        arg_word: {(${ Id.VSub_Name srcdir)}
                      )
                  )
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:name)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ ($ Id.VSub_DollarName '$name'))})
                              (C {<sed>} {<-e>} {(SQ <'s://*:/:g'>)})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [549]
                )
              ]
            )
            (C {<local>} {<Id.Lit_VarLike 'mode='> (DQ ($ Id.VSub_Number '$2'))})
            (C {<local>} {<Id.Lit_VarLike 'uid='> (DQ ($ Id.VSub_Number '$3'))})
            (C {<local>} {<Id.Lit_VarLike 'gid='> (DQ ($ Id.VSub_Number '$4'))})
            (C {<local>} 
              {<Id.Lit_VarLike 'ftype='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<filetype>} {(DQ (${ Id.VSub_Name location))})
                )
              }
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$root_uid'))} 
                  {<Id.Lit_Equals '='>} {(DQ <squash>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:uid)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [627]
                    )
                  ]
                )
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$uid'))} {<-eq>} 
                  {(DQ ($ Id.VSub_DollarName '$root_uid'))} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:uid)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [648]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$root_gid'))} 
                  {<Id.Lit_Equals '='>} {(DQ <squash>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:gid)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [668]
                    )
                  ]
                )
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$gid'))} {<-eq>} 
                  {(DQ ($ Id.VSub_DollarName '$root_gid'))} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:gid)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [689]
                    )
                  ]
                )
              ]
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'str='> 
                (DQ (${ Id.VSub_Name mode) <' '> (${ Id.VSub_Name uid) <' '> (${ Id.VSub_Name gid))
              }
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name ftype))} {<Id.Lit_Equals '='>} 
                  {(DQ <invalid>)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name location))} {<Id.Lit_Equals '='>} 
                  {(DQ (${ Id.VSub_Name srcdir))} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name ftype))}
              arms: [
                (case_arm
                  pat_list: [{(DQ <file>)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:str)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name ftype) <' '> (${ Id.VSub_Name name) <' '> 
                                (${ Id.VSub_Name location) <' '> (${ Id.VSub_Name str)
                              )
                            }
                          spids: [778]
                        )
                      ]
                    )
                  ]
                  spids: [772 775 798 -1]
                )
                (case_arm
                  pat_list: [{(DQ <nod>)}]
                  action: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'dev='> 
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: 
                            (command.Simple
                              words: [{<ls>} {<-l>} {(DQ (${ Id.VSub_Name location))}]
                              more_env: [(env_pair name:LC_ALL val:{<C>} spids:[813])]
                              do_fork: T
                            )
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'maj='> 
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: (C {<field>} {<5>} {(${ Id.VSub_Name dev)})
                        )
                      }
                    )
                    (C {<local>} 
                      {<Id.Lit_VarLike 'min='> 
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: (C {<field>} {<6>} {(${ Id.VSub_Name dev)})
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:maj)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name maj>
                                suffix_op: (suffix_op.Unary tok:<Id.VOp1_Percent '%'> arg_word:{<','>})
                              )
                            }
                          spids: [860]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {<-b>} {(DQ (${ Id.VSub_Name location))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:dev)
                              op: assign_op.Equal
                              rhs: {(DQ <b>)}
                              spids: [883]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:dev)
                              op: assign_op.Equal
                              rhs: {(DQ <c>)}
                              spids: [890]
                            )
                          ]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:str)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name ftype) <' '> (${ Id.VSub_Name name) <' '> 
                                (${ Id.VSub_Name str) <' '> (${ Id.VSub_Name dev) <' '> (${ Id.VSub_Name maj) <' '> (${ Id.VSub_Name min)
                              )
                            }
                          spids: [897]
                        )
                      ]
                    )
                  ]
                  spids: [801 804 925 -1]
                )
                (case_arm
                  pat_list: [{(DQ <slink>)}]
                  action: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'target='> 
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: (C {<readlink>} {(DQ (${ Id.VSub_Name location))})
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:str)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name ftype) <' '> (${ Id.VSub_Name name) <' '> 
                                (${ Id.VSub_Name target) <' '> (${ Id.VSub_Name str)
                              )
                            }
                          spids: [950]
                        )
                      ]
                    )
                  ]
                  spids: [928 931 970 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:str)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name ftype) <' '> (${ Id.VSub_Name name) <' '> 
                                (${ Id.VSub_Name str)
                              )
                            }
                          spids: [977]
                        )
                      ]
                    )
                  ]
                  spids: [973 974 993 -1]
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ (${ Id.VSub_Name str))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name output)}
                )
              ]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: unknown_option
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <'ERROR: unknown option '> 
                    (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$arg') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                    <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [{<printf>} {(DQ <'If the filename validly begins with \'-\', '>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [{<printf>} {(DQ <'then it must be prefixed'> <Id.Lit_BadBackslash '\\'> <n>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [{<printf>} {(DQ <'by \'./\' so that it won\'t be interpreted as an option.'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [{<printf>} {(DQ <Id.Lit_BadBackslash '\\'> <n>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [{<usage>}]
              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>})
          ]
        )
    )
    (command.ShFunction name:list_header body:(BraceGroup children:[(C {<Id.Lit_Colon ':'>})]))
    (command.ShFunction
      name: header
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <Id.Lit_BadBackslash '\\'> <'n#####################'> <Id.Lit_BadBackslash '\\'> 
                    <'n# '> ($ Id.VSub_Number '$1') <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name output)}
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: dir_filelist
      body: 
        (BraceGroup
          children: [
            (C {(${ Id.VSub_Name dep_list) <header>} {(DQ ($ Id.VSub_Number '$1'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:srcdir)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ ($ Id.VSub_Number '$1'))})
                              (C {<sed>} {<-e>} {(SQ <'s://*:/:g'>)})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [1162]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:dirlist)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<find>} {(DQ (${ Id.VSub_Name srcdir))} {<-printf>} 
                            {(DQ <'%p %m %U %G'> <Id.Lit_BadBackslash '\\'> <n>)}
                          )
                      )
                    }
                  spids: [1182]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (C {<echo>} {(DQ (${ Id.VSub_Name dirlist))})
                                          (C {<wc>} {<-l>})
                                        ]
                                        negated: F
                                      )
                                  )
                                )
                              } {<-gt>} {<1>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {(${ Id.VSub_Name dep_list) <print_mtime>} {(DQ ($ Id.VSub_Number '$1'))})
                    (command.Pipeline
                      children: [
                        (C {<echo>} {(DQ (${ Id.VSub_Name dirlist))})
                        (command.WhileUntil
                          keyword: <Id.KW_While while>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<read>} {<x>})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          body: 
                            (command.DoGroup
                              children: [(C {(${ Id.VSub_Name dep_list) <parse>} {(${ Id.VSub_Name x)})]
                            )
                        )
                      ]
                      negated: F
                    )
                  ]
                  spids: [1207 1236]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: input_file
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:source)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [1306]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_Number '$1'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {(${ Id.VSub_Name dep_list) <header>} {(DQ ($ Id.VSub_Number '$1'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:is_cpio)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (C {<echo>} {(DQ ($ Id.VSub_Number '$1'))})
                                        (C {<sed>} {(SQ <'s/^.*\\.cpio\\(\\..*\\)\\?/cpio/'>)})
                                      ]
                                      negated: F
                                    )
                                )
                              )
                            }
                          spids: [1338]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$2')} {<-eq>} {<0>} 
                                      {<-a>} {(${ Id.VSub_Name is_cpio)} {<Id.Lit_Equals '='>} {(DQ <cpio>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cpio_file)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number '$1')}
                                  spids: [1386]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (command.Pipeline
                                  children: [
                                    (C {<echo>} {(DQ ($ Id.VSub_Number '$1'))})
                                    (C {<grep>} {<-q>} {(SQ <'^.*\\.cpio\\..*'>)})
                                  ]
                                  negated: F
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:is_cpio_compressed)
                                      op: assign_op.Equal
                                      rhs: {(DQ <compressed>)}
                                      spids: [1408]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} 
                                  {(${ Id.VSub_Name dep_list)} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<echo>} {(DQ ($ Id.VSub_Number '$1'))})
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [1358 1383]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name dep_list)} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Simple
                              words: [{<print_mtime>} {(DQ ($ Id.VSub_Number '$1'))}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name output)}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              words: [{<cat>} {(DQ ($ Id.VSub_Number '$1'))}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name output)}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          spids: [1443 1456]
                        )
                      ]
                      else_action: [
                        (C {<echo>} 
                          {
                            (DQ ($ Id.VSub_Number '$1') <' '> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\\\'>
                              )
                            )
                          }
                        )
                        (command.Pipeline
                          children: [
                            (C {<cat>} {(DQ ($ Id.VSub_Number '$1'))})
                            (command.WhileUntil
                              keyword: <Id.KW_While while>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: (C {<read>} {<type>} {<dir>} {<file>} {<perm>})
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<Id.Lit_LBracket '['>} 
                                                      {(DQ ($ Id.VSub_DollarName '$type'))} {<Id.Lit_Equals '='>} {(DQ <file>)} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.Sentence
                                              child: 
                                                (C {<echo>} 
                                                  {
                                                    (DQ ($ Id.VSub_DollarName '$file') <' '> 
                                                      (word_part.EscapedLiteral
                                                        token: <Id.Lit_EscapedChar '\\\\'>
                                                      )
                                                    )
                                                  }
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          spids: [1522 1539]
                                        )
                                      ]
                                    )
                                  ]
                                )
                            )
                          ]
                          negated: F
                        )
                      ]
                    )
                  ]
                  spids: [1312 1325]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ ($ Id.VSub_Number '$1'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<dir_filelist>} {(DQ ($ Id.VSub_Number '$1'))})]
                  spids: [1561 1574]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (DQ <'  '> (${ Id.VSub_Name prog) <': Cannot open \''> ($ Id.VSub_Number '$1') 
                        <'\''>
                      )
                    }
                  ]
                  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>})
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:prog)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$0')}
          spids: [1613]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:root_uid)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [1616]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:root_gid)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [1619]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:dep_list)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [1622]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:cpio_file)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [1624]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:cpio_list)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [1626]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:output)
          op: assign_op.Equal
          rhs: {(DQ <'/dev/stdout'>)}
          spids: [1628]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:output_file)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [1633]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:is_cpio_compressed)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [1637]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:compr)
          op: assign_op.Equal
          rhs: {(DQ <'gzip -n -9 -f'>)}
          spids: [1639]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:arg)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number '$1'))}
          spids: [1645]
        )
      ]
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_DollarName '$arg'))}
      arms: [
        (case_arm
          pat_list: [{(DQ <-l>)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:dep_list)
                  op: assign_op.Equal
                  rhs: {(DQ <list_>)}
                  spids: [1668]
                )
              ]
            )
            (C {<echo>} 
              {
                (DQ <'deps_initramfs := '> ($ Id.VSub_Number '$0') <' '> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>)
                )
              }
            )
            (C {<shift>})
          ]
          spids: [1659 1662 1687 -1]
        )
        (case_arm
          pat_list: [{(DQ <-o>)}]
          action: [
            (C {<shift>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:output_file)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [1702]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cpio_list)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (C {<mktemp>} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name TMPDIR>
                                  suffix_op: 
                                    (suffix_op.Unary
                                      tok: <Id.VTest_ColonHyphen ':-'>
                                      arg_word: {<Id.Lit_Slash '/'> <tmp>}
                                    )
                                ) <'/cpiolist.XXXXXX'>
                              }
                            )
                        )
                      )
                    }
                  spids: [1708]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:output)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name cpio_list)}
                  spids: [1724]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.Pipeline
                  children: [
                    (C {<echo>} {(DQ ($ Id.VSub_DollarName '$output_file'))})
                    (C {<grep>} {<-q>} {(DQ <Id.Lit_BadBackslash '\\'> <.gz> <Id.Lit_Dollar '$'>)})
                  ]
                  negated: F
                )
                (C {<Id.Lit_LBracket '['>} {<-x>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [{<which>} {<gzip>}]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    )
                  } {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:compr)
                      op: assign_op.Equal
                      rhs: {(DQ <'gzip -n -9 -f'>)}
                      spids: [1776]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.Pipeline
                  children: [
                    (C {<echo>} {(DQ ($ Id.VSub_DollarName '$output_file'))})
                    (C {<grep>} {<-q>} {(DQ <Id.Lit_BadBackslash '\\'> <.bz2> <Id.Lit_Dollar '$'>)})
                  ]
                  negated: F
                )
                (C {<Id.Lit_LBracket '['>} {<-x>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [{<which>} {<bzip2>}]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    )
                  } {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:compr)
                      op: assign_op.Equal
                      rhs: {(DQ <'bzip2 -9 -f'>)}
                      spids: [1828]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.Pipeline
                  children: [
                    (C {<echo>} {(DQ ($ Id.VSub_DollarName '$output_file'))})
                    (C {<grep>} {<-q>} {(DQ <Id.Lit_BadBackslash '\\'> <.lzma> <Id.Lit_Dollar '$'>)})
                  ]
                  negated: F
                )
                (C {<Id.Lit_LBracket '['>} {<-x>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [{<which>} {<lzma>}]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    )
                  } {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:compr)
                      op: assign_op.Equal
                      rhs: {(DQ <'lzma -9 -f'>)}
                      spids: [1880]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.Pipeline
                  children: [
                    (C {<echo>} {(DQ ($ Id.VSub_DollarName '$output_file'))})
                    (C {<grep>} {<-q>} {(DQ <Id.Lit_BadBackslash '\\'> <.xz> <Id.Lit_Dollar '$'>)})
                  ]
                  negated: F
                )
                (C {<Id.Lit_LBracket '['>} {<-x>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [{<which>} {<xz>}]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    )
                  } {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:compr)
                      op: assign_op.Equal
                      rhs: {(DQ <'xz --check=crc32 --lzma2=dict=1MiB'>)}
                      spids: [1932]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.Pipeline
                  children: [
                    (C {<echo>} {(DQ ($ Id.VSub_DollarName '$output_file'))})
                    (C {<grep>} {<-q>} {(DQ <Id.Lit_BadBackslash '\\'> <.lzo> <Id.Lit_Dollar '$'>)})
                  ]
                  negated: F
                )
                (C {<Id.Lit_LBracket '['>} {<-x>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [{<which>} {<lzop>}]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    )
                  } {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:compr)
                      op: assign_op.Equal
                      rhs: {(DQ <'lzop -9 -f'>)}
                      spids: [1984]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.Pipeline
                  children: [
                    (C {<echo>} {(DQ ($ Id.VSub_DollarName '$output_file'))})
                    (C {<grep>} {<-q>} {(DQ <Id.Lit_BadBackslash '\\'> <.lz4> <Id.Lit_Dollar '$'>)})
                  ]
                  negated: F
                )
                (C {<Id.Lit_LBracket '['>} {<-x>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [{<which>} {<lz4>}]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    )
                  } {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:compr)
                      op: assign_op.Equal
                      rhs: {(DQ <'lz4 -l -9 -f'>)}
                      spids: [2036]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.Pipeline
                  children: [
                    (C {<echo>} {(DQ ($ Id.VSub_DollarName '$output_file'))})
                    (C {<grep>} {<-q>} {(DQ <Id.Lit_BadBackslash '\\'> <.cpio> <Id.Lit_Dollar '$'>)})
                  ]
                  negated: F
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:compr)
                      op: assign_op.Equal
                      rhs: {(DQ <cat>)}
                      spids: [2062]
                    )
                  ]
                )
              ]
            )
            (C {<shift>})
          ]
          spids: [1690 1693 2071 -1]
        )
      ]
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:arg)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [2091]
                )
              ]
            )
            (C {<shift>})
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$arg'))}
              arms: [
                (case_arm
                  pat_list: [{(DQ <-u>)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:root_uid)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Number '$1'))}
                          spids: [2118]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                  spids: [2109 2112 2127 -1]
                )
                (case_arm
                  pat_list: [{(DQ <-g>)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:root_gid)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Number '$1'))}
                          spids: [2139]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                  spids: [2130 2133 2148 -1]
                )
                (case_arm
                  pat_list: [{(DQ <-d>)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:default_list)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$arg'))}
                          spids: [2160]
                        )
                      ]
                    )
                    (C {(${ Id.VSub_Name dep_list) <default_initramfs>})
                  ]
                  spids: [2151 2154 2172 -1]
                )
                (case_arm
                  pat_list: [{(DQ <-h>)}]
                  action: [
                    (C {<usage>})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [2175 2178 2189 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$arg'))}
                      arms: [
                        (case_arm
                          pat_list: [{(DQ <->) <Id.Lit_Star '*'>}]
                          action: [(C {<unknown_option>})]
                          spids: [2205 2209 2215 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (C {<input_file>} {(DQ ($ Id.VSub_DollarName '$arg'))} 
                              {(DQ ($ Id.VSub_Pound '$#'))}
                            )
                          ]
                          spids: [2218 2219 2236 -1]
                        )
                      ]
                    )
                  ]
                  spids: [2192 2193 2242 -1]
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(${ Id.VSub_Name output_file)} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name cpio_file)} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:timestamp)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [2290]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<test>} {<-n>} 
                                      {(DQ ($ Id.VSub_DollarName '$KBUILD_BUILD_TIMESTAMP'))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:timestamp)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.AndOr
                                              ops: [Id.Op_DPipe]
                                              children: [
                                                (C {<date>} 
                                                  {<-d> 
                                                    (DQ 
                                                      ($ Id.VSub_DollarName '$KBUILD_BUILD_TIMESTAMP')
                                                    )
                                                  } {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <s>}
                                                )
                                                (C {<Id.Lit_Colon ':'>})
                                              ]
                                            )
                                        )
                                      )
                                    }
                                  spids: [2307]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$timestamp'))})
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:timestamp)
                                          op: assign_op.Equal
                                          rhs: {(DQ <'-t '> ($ Id.VSub_DollarName '$timestamp'))}
                                          spids: [2342]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [2328 2339]
                                )
                              ]
                            )
                          ]
                          spids: [2293 2304]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cpio_tfile)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (C {<mktemp>} 
                                      {
                                        (braced_var_sub
                                          token: <Id.VSub_Name TMPDIR>
                                          suffix_op: 
                                            (suffix_op.Unary
                                              tok: <Id.VTest_ColonHyphen ':-'>
                                              arg_word: {<Id.Lit_Slash '/'> <tmp>}
                                            )
                                        ) <'/cpiofile.XXXXXX'>
                                      }
                                    )
                                )
                              )
                            }
                          spids: [2355]
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {<'usr/gen_init_cpio'>}
                        {($ Id.VSub_DollarName '$timestamp')}
                        {(${ Id.VSub_Name cpio_list)}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(${ Id.VSub_Name cpio_tfile)}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [2274 2287]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:cpio_tfile)
                      op: assign_op.Equal
                      rhs: {(${ Id.VSub_Name cpio_file)}
                      spids: [2389]
                    )
                  ]
                )
              ]
            )
            (C {<rm>} {(${ Id.VSub_Name cpio_list)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name is_cpio_compressed))} 
                              {<Id.Lit_Equals '='>} {(DQ <compressed>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<cat>} {(${ Id.VSub_Name cpio_tfile)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(${ Id.VSub_Name output_file)}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [2405 2424]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (command.Subshell
                      child: 
                        (command.Pipeline
                          children: [
                            (C {<cat>} {(${ Id.VSub_Name cpio_tfile)})
                            (command.Simple
                              words: [{(${ Id.VSub_Name compr)} {<->}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(${ Id.VSub_Name output_file)}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          negated: F
                        )
                    )
                    (command.Subshell
                      child: 
                        (command.CommandList
                          children: [
                            (command.Sentence
                              child: (C {<rm>} {<-f>} {(${ Id.VSub_Name output_file)})
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<false>})
                          ]
                        )
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name cpio_file)} {<Id.Lit_RBracket ']'>})
                (C {<rm>} {(${ Id.VSub_Name cpio_tfile)})
              ]
            )
          ]
          spids: [2256 2271]
        )
      ]
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)