(command.CommandList
  children: [
    (C {(Id.KW_Set set)} {(-e)})
    (command.ShFunction
      name: usage
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:47)
                  fd: -1
                  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')
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: field
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(shift)} {($ Id.VSub_Number '$1')})
              terminator: (Token id:Id.Op_Semi val:';' span_id:105)
            )
            (C {(echo)} {($ Id.VSub_Number '$1')})
          ]
        )
    )
    (command.ShFunction
      name: list_default_initramfs
      body: (command.BraceGroup children:[(C {(Id.Lit_Other ':')})])
    )
    (command.ShFunction
      name: default_initramfs
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:139)
                  fd: -1
                  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.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:142)
                  fd: -1
                  arg_word: {(${ Id.VSub_Name output)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: filetype
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'argv1=') (DQ ($ Id.VSub_Number '$1'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-L)} {(DQ (${ Id.VSub_Name argv1))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:193)
                    )
                  ]
                  action: [(C {(echo)} {(DQ (slink))})]
                  spids: [180 195]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-f)} {(DQ (${ Id.VSub_Name argv1))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:218)
                    )
                  ]
                  action: [(C {(echo)} {(DQ (file))})]
                  spids: [205 220]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-d)} {(DQ (${ Id.VSub_Name argv1))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:243)
                    )
                  ]
                  action: [(C {(echo)} {(DQ (dir))})]
                  spids: [230 245]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-b)} {(DQ (${ Id.VSub_Name argv1))} {(-o)} {(-c)} 
                          {(DQ (${ Id.VSub_Name argv1))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:278)
                    )
                  ]
                  action: [(C {(echo)} {(DQ (nod))})]
                  spids: [255 280]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-p)} {(DQ (${ Id.VSub_Name argv1))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:303)
                    )
                  ]
                  action: [(C {(echo)} {(DQ (pipe))})]
                  spids: [290 305]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-S)} {(DQ (${ Id.VSub_Name argv1))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:328)
                    )
                  ]
                  action: [(C {(echo)} {(DQ (sock))})]
                  spids: [315 330]
                )
              ]
              else_action: [(C {(echo)} {(DQ (invalid))})]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:353)
              arg_word: {(0)}
            )
          ]
        )
    )
    (command.ShFunction
      name: list_print_mtime
      body: (command.BraceGroup children:[(C {(Id.Lit_Other ':')})])
    )
    (command.ShFunction
      name: print_mtime
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'my_mtime=') (DQ (0))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-e)} {(DQ ($ Id.VSub_Number '$1'))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:399)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:my_mtime)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:405)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(find)} {(DQ ($ Id.VSub_Number '$1'))} {(-printf)} 
                                            {(DQ ('%T@') (Id.Lit_Other '\\') (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.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:449)
                  fd: -1
                  arg_word: {(${ Id.VSub_Name output)}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(DQ )}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:461)
                  fd: -1
                  arg_word: {(${ Id.VSub_Name output)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: list_parse
      body: 
        (command.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: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:496)
                      )
                    )
                  }
                )
                (C {(Id.Lit_Other ':')})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: parse
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'location=') (DQ ($ Id.VSub_Number '$1'))})
            (C {(local)} 
              {(Id.Lit_VarLike 'name=') 
                (DQ (/) 
                  (braced_var_sub
                    token: (Token id:Id.VSub_Name val:location span_id:536)
                    suffix_op: 
                      (suffix_op.Unary
                        op_id: 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: (Token id:Id.Left_DollarParen val:'$(' span_id:550)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ Id.VSub_DollarName '$name'))})
                                  (C {(sed)} {(-e)} 
                                    {(SQ (Token id:Id.Lit_Chars val:'s://*:/:g' span_id:564))}
                                  )
                                ]
                                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: (Token id:Id.Left_DollarParen val:'$(' span_id:596)
                  command_list: 
                    (command.CommandList
                      children: [(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: (Token id:Id.ControlFlow_Return val:return span_id:730)
                  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: (Token id:Id.ControlFlow_Return val:return span_id:755)
                  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: (Token id:Id.Left_Backtick val:'`' span_id:810)
                          command_list: 
                            (command.CommandList
                              children: [
                                (command.Simple
                                  words: [{(ls)} {(-l)} {(DQ (${ Id.VSub_Name location))}]
                                  more_env: [(env_pair name:LC_ALL val:{(C)} spids:[813])]
                                )
                              ]
                            )
                        )
                      }
                    )
                    (C {(local)} 
                      {(Id.Lit_VarLike 'maj=') 
                        (command_sub
                          left_token: (Token id:Id.Left_Backtick val:'`' span_id:831)
                          command_list: 
                            (command.CommandList
                              children: [(C {(field)} {(5)} {(${ Id.VSub_Name dev)})]
                            )
                        )
                      }
                    )
                    (C {(local)} 
                      {(Id.Lit_VarLike 'min=') 
                        (command_sub
                          left_token: (Token id:Id.Left_Backtick val:'`' span_id:847)
                          command_list: 
                            (command.CommandList
                              children: [(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: (Token id:Id.VSub_Name val:maj span_id:862)
                                suffix_op: (suffix_op.Unary op_id: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: (Token id:Id.Left_Backtick val:'`' span_id:937)
                          command_list: 
                            (command.CommandList
                              children: [(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.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:1008)
                  fd: -1
                  arg_word: {(${ Id.VSub_Name output)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:1016)
              arg_word: {(0)}
            )
          ]
        )
    )
    (command.ShFunction
      name: unknown_option
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [
                {(printf)}
                {
                  (DQ ('ERROR: unknown option ') 
                    (word_part.EscapedLiteral
                      token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1034)
                    ) ($ Id.VSub_DollarName '$arg') 
                    (word_part.EscapedLiteral
                      token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1036)
                    ) (Id.Lit_Other '\\') (n)
                  )
                }
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1041)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
            (command.Simple
              words: [{(printf)} {(DQ ("If the filename validly begins with '-', "))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1051)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
            (command.Simple
              words: [{(printf)} {(DQ ('then it must be prefixed') (Id.Lit_Other '\\') (n))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1063)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
            (command.Simple
              words: [{(printf)} {(DQ ("by './' so that it won't be interpreted as an option."))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1073)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
            (command.Simple
              words: [{(printf)} {(DQ (Id.Lit_Other '\\') (n))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1084)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
            (command.Simple
              words: [{(usage)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1090)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:1094)
              arg_word: {(1)}
            )
          ]
        )
    )
    (command.ShFunction
      name: list_header
      body: (command.BraceGroup children:[(C {(Id.Lit_Other ':')})])
    )
    (command.ShFunction
      name: header
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [
                {(printf)}
                {
                  (DQ (Id.Lit_Other '\\') ('n#####################') (Id.Lit_Other '\\') ('n# ') 
                    ($ Id.VSub_Number '$1') (Id.Lit_Other '\\') (n)
                  )
                }
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:1132)
                  fd: -1
                  arg_word: {(${ Id.VSub_Name output)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: dir_filelist
      body: 
        (command.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: (Token id:Id.Left_DollarParen val:'$(' span_id:1163)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ Id.VSub_Number '$1'))})
                                  (C {(sed)} {(-e)} 
                                    {(SQ (Token id:Id.Lit_Chars val:'s://*:/:g' span_id:1177))}
                                  )
                                ]
                                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: (Token id:Id.Left_DollarParen val:'$(' span_id:1183)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(find)} {(DQ (${ Id.VSub_Name srcdir))} {(-printf)} 
                                {(DQ ('%p %m %U %G') (Id.Lit_Other '\\') (n))}
                              )
                            ]
                          )
                      )
                    }
                  spids: [1182]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} 
                          {
                            (DQ 
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1212)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(echo)} {(DQ (${ Id.VSub_Name dirlist))})
                                          (C {(wc)} {(-l)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            )
                          } {(-gt)} {(1)} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1234)
                    )
                  ]
                  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: (Token id:Id.KW_While val:while span_id:1262)
                          cond: [
                            (command.Sentence
                              child: (C {(read)} {(x)})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1267)
                            )
                          ]
                          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: 
        (command.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: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-f)} {(DQ ($ Id.VSub_Number '$1'))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1323)
                    )
                  ]
                  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: (Token id:Id.Left_DollarParen val:'$(' span_id:1340)
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (C {(echo)} {(DQ ($ Id.VSub_Number '$1'))})
                                            (C {(sed)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: 's/^.*\\.cpio\\(\\..*\\)\\?/cpio/'
                                                    span_id: 1352
                                                  )
                                                )
                                              }
                                            )
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                )
                              )
                            }
                          spids: [1338]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (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: (Token id:Id.Op_Semi val:';' span_id:1381)
                            )
                          ]
                          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 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: '^.*\\.cpio\\..*'
                                            span_id: 1403
                                          )
                                        )
                                      }
                                    )
                                  ]
                                  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: (Token id:Id.ControlFlow_Return val:return span_id:1435)
                              arg_word: {(0)}
                            )
                          ]
                          spids: [1358 1383]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(-z)} {(${ Id.VSub_Name dep_list)} 
                                  {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1454)
                            )
                          ]
                          action: [
                            (command.Simple
                              words: [{(print_mtime)} {(DQ ($ Id.VSub_Number '$1'))}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:1465)
                                  fd: -1
                                  arg_word: {(${ Id.VSub_Name output)}
                                )
                              ]
                            )
                            (command.Simple
                              words: [{(cat)} {(DQ ($ Id.VSub_Number '$1'))}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:1478)
                                  fd: -1
                                  arg_word: {(${ Id.VSub_Name output)}
                                )
                              ]
                            )
                          ]
                          spids: [1443 1456]
                        )
                      ]
                      else_action: [
                        (C {(echo)} 
                          {
                            (DQ ($ Id.VSub_Number '$1') (' ') 
                              (word_part.EscapedLiteral
                                token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:1493)
                              )
                            )
                          }
                        )
                        (command.Pipeline
                          children: [
                            (C {(cat)} {(DQ ($ Id.VSub_Number '$1'))})
                            (command.WhileUntil
                              keyword: (Token id:Id.KW_While val:while span_id:1505)
                              cond: [
                                (command.Sentence
                                  child: (C {(read)} {(type)} {(dir)} {(file)} {(perm)})
                                  terminator: (Token id:Id.Op_Semi val:';' span_id:1517)
                                )
                              ]
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {(Id.Lit_LBracket '[')} 
                                                  {(DQ ($ Id.VSub_DollarName '$type'))} {(Id.Lit_Equals '=')} {(DQ (file))} {(Id.Lit_RBracket ']')}
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:1537)
                                            )
                                          ]
                                          action: [
                                            (command.Sentence
                                              child: 
                                                (C {(echo)} 
                                                  {
                                                    (DQ ($ Id.VSub_DollarName '$file') (' ') 
                                                      (word_part.EscapedLiteral
                                                        token: 
                                                          (Token
                                                            id: Id.Lit_EscapedChar
                                                            val: '\\\\'
                                                            span_id: 1547
                                                          )
                                                      )
                                                    )
                                                  }
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:1549)
                                            )
                                          ]
                                          spids: [1522 1539]
                                        )
                                      ]
                                    )
                                  ]
                                )
                            )
                          ]
                          negated: F
                        )
                      ]
                    )
                  ]
                  spids: [1312 1325]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-d)} {(DQ ($ Id.VSub_Number '$1'))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1572)
                    )
                  ]
                  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.Redir
                      op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1599)
                      fd: -1
                      arg_word: {(2)}
                    )
                  ]
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:1603)
                  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: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:1680)
                  )
                )
              }
            )
            (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: (Token id:Id.Left_DollarParen val:'$(' span_id:1710)
                          command_list: 
                            (command.CommandList
                              children: [
                                (C {(mktemp)} 
                                  {
                                    (braced_var_sub
                                      token: (Token id:Id.VSub_Name val:TMPDIR span_id:1714)
                                      suffix_op: 
                                        (suffix_op.Unary
                                          op_id: 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_Other '\\') (.gz) (Id.Lit_Other '$'))})
                  ]
                  negated: F
                )
                (C {(Id.Lit_LBracket '[')} {(-x)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:1757)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [{(which)} {(gzip)}]
                                redirects: [
                                  (redir.Redir
                                    op: (Token id:Id.Redir_Great val:'2>' span_id:1764)
                                    fd: 2
                                    arg_word: {(/dev/null)}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    )
                  } {(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_Other '\\') (.bz2) (Id.Lit_Other '$'))})
                  ]
                  negated: F
                )
                (C {(Id.Lit_LBracket '[')} {(-x)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:1809)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [{(which)} {(bzip2)}]
                                redirects: [
                                  (redir.Redir
                                    op: (Token id:Id.Redir_Great val:'2>' span_id:1816)
                                    fd: 2
                                    arg_word: {(/dev/null)}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    )
                  } {(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_Other '\\') (.lzma) (Id.Lit_Other '$'))})
                  ]
                  negated: F
                )
                (C {(Id.Lit_LBracket '[')} {(-x)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:1861)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [{(which)} {(lzma)}]
                                redirects: [
                                  (redir.Redir
                                    op: (Token id:Id.Redir_Great val:'2>' span_id:1868)
                                    fd: 2
                                    arg_word: {(/dev/null)}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    )
                  } {(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_Other '\\') (.xz) (Id.Lit_Other '$'))})
                  ]
                  negated: F
                )
                (C {(Id.Lit_LBracket '[')} {(-x)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:1913)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [{(which)} {(xz)}]
                                redirects: [
                                  (redir.Redir
                                    op: (Token id:Id.Redir_Great val:'2>' span_id:1920)
                                    fd: 2
                                    arg_word: {(/dev/null)}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    )
                  } {(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_Other '\\') (.lzo) (Id.Lit_Other '$'))})
                  ]
                  negated: F
                )
                (C {(Id.Lit_LBracket '[')} {(-x)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:1965)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [{(which)} {(lzop)}]
                                redirects: [
                                  (redir.Redir
                                    op: (Token id:Id.Redir_Great val:'2>' span_id:1972)
                                    fd: 2
                                    arg_word: {(/dev/null)}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    )
                  } {(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_Other '\\') (.lz4) (Id.Lit_Other '$'))})
                  ]
                  negated: F
                )
                (C {(Id.Lit_LBracket '[')} {(-x)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:2017)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [{(which)} {(lz4)}]
                                redirects: [
                                  (redir.Redir
                                    op: (Token id:Id.Redir_Great val:'2>' span_id:2024)
                                    fd: 2
                                    arg_word: {(/dev/null)}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    )
                  } {(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_Other '\\') (.cpio) (Id.Lit_Other '$'))})
                  ]
                  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: (Token id:Id.KW_While val:while span_id:2075)
      cond: [
        (command.Sentence
          child: 
            (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-gt)} {(0)} {(Id.Lit_RBracket ']')})
          terminator: (Token id:Id.Op_Semi val:';' span_id:2086)
        )
      ]
      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: (Token id:Id.ControlFlow_Exit val:exit span_id:2184)
                      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: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-z)} {(${ Id.VSub_Name output_file)} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:2269)
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-z)} {(${ Id.VSub_Name cpio_file)} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2285)
                    )
                  ]
                  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: [
                            (command.Sentence
                              child: 
                                (C {(test)} {(-n)} 
                                  {(DQ ($ Id.VSub_DollarName '$KBUILD_BUILD_TIMESTAMP'))}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:2302)
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:timestamp)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (command_sub
                                          left_token: 
                                            (Token
                                              id: Id.Left_DollarParen
                                              val: '$('
                                              span_id: 2309
                                            )
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (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_Other ':')})
                                                  ]
                                                )
                                              ]
                                            )
                                        )
                                      )
                                    }
                                  spids: [2307]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$timestamp'))})
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:2337)
                                    )
                                  ]
                                  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: (Token id:Id.Left_DollarParen val:'$(' span_id:2357)
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(mktemp)} 
                                          {
                                            (braced_var_sub
                                              token: (Token id:Id.VSub_Name val:TMPDIR span_id:2361)
                                              suffix_op: 
                                                (suffix_op.Unary
                                                  op_id: 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.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:2379)
                          fd: -1
                          arg_word: {(${ Id.VSub_Name cpio_tfile)}
                        )
                      ]
                    )
                  ]
                  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: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name is_cpio_compressed))} 
                          {(Id.Lit_Equals '=')} {(DQ (compressed))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2422)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(cat)} {(${ Id.VSub_Name cpio_tfile)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:2433)
                          fd: -1
                          arg_word: {(${ Id.VSub_Name output_file)}
                        )
                      ]
                    )
                  ]
                  spids: [2405 2424]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (command.Subshell
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Pipeline
                              children: [
                                (C {(cat)} {(${ Id.VSub_Name cpio_tfile)})
                                (command.Simple
                                  words: [{(${ Id.VSub_Name compr)} {(-)}]
                                  redirects: [
                                    (redir.Redir
                                      op: (Token id:Id.Redir_Great val:'>' span_id:2458)
                                      fd: -1
                                      arg_word: {(${ Id.VSub_Name output_file)}
                                    )
                                  ]
                                )
                              ]
                              negated: F
                            )
                          ]
                        )
                    )
                    (command.Subshell
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Sentence
                              child: (C {(rm)} {(-f)} {(${ Id.VSub_Name output_file)})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:2478)
                            )
                            (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:(Token id:Id.ControlFlow_Exit val:exit span_id:2507) arg_word:{(0)})
  ]
)