(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<test>} {($ Id.VSub_Pound '$#')} {<-ne>} {<3>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'Usage: '> ($ Id.VSub_Number '$0') 
                    <' /sbin/depmod <kernelrelease> <symbolprefix>'>
                  )
                }
              ]
              redirects: [(redir.Redir op:<Id.Redir_GreatAnd '>&'> fd:-1 arg_word:{<2>})]
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [10 21]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DEPMOD)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [42]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:KERNELRELEASE)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$2')}
          spids: [45]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYMBOL_PREFIX)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$3')}
          spids: [48]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Pipeline
                  children: [
                    (C {<test>} {<-r>} {<System.map>} {<-a>} {<-x>} {(DQ ($ Id.VSub_DollarName '$DEPMOD'))})
                  ]
                  negated: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})]
          spids: [52 71]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$SYMBOL_PREFIX'))})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:release)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [(C {(DQ ($ Id.VSub_DollarName '$DEPMOD'))} {<--version>})]
                          )
                      )
                    }
                  spids: [101]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:package)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {<echo>} {(DQ ($ Id.VSub_DollarName '$release'))})
                                  (C {<cut>} {<-d> (SQ <' '>)} {<-f>} {<1>})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [111]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<test>} {(DQ ($ Id.VSub_DollarName '$package'))} {<Id.Lit_Equals '='>} 
                          {(DQ <module-init-tools>)}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:version)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {<echo>} {(DQ ($ Id.VSub_DollarName '$release'))})
                                          (C {<cut>} {<-d> (SQ <' '>)} {<-f>} {<2>})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [152]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:later)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {<printf>} {(SQ <'%s\\n'>)} 
                                            {(DQ ($ Id.VSub_DollarName '$version'))} {(DQ <3.13>)}
                                          )
                                          (C {<sort>} {<-V>})
                                          (C {<tail>} {<-n>} {<1>})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [175]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<test>} {(DQ ($ Id.VSub_DollarName '$later'))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$version'))}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:SYMBOL_PREFIX)
                                  op: assign_op.Equal
                                  rhs: {(DQ )}
                                  spids: [230]
                                )
                              ]
                            )
                          ]
                          spids: [207 223]
                        )
                      ]
                    )
                  ]
                  spids: [134 149]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$SYMBOL_PREFIX'))})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SYMBOL_PREFIX)
                          op: assign_op.Equal
                          rhs: {(DQ <'-P '> ($ Id.VSub_DollarName '$SYMBOL_PREFIX'))}
                          spids: [255]
                        )
                      ]
                    )
                  ]
                  spids: [241 252]
                )
              ]
            )
          ]
          spids: [87 98]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:depmod_hack_needed)
          op: assign_op.Equal
          rhs: {<true>}
          spids: [273]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tmp_dir)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                command_list: 
                  (command.CommandList
                    children: [
                      (C {<mktemp>} {<-d>} 
                        {
                          (braced_var_sub
                            token: <Id.VSub_Name TMPDIR>
                            suffix_op: 
                              (suffix_op.Unary
                                op_id: Id.VTest_ColonHyphen
                                arg_word: {<Id.Lit_Slash /> <tmp>}
                              )
                          ) </depmod.XXXXXX>
                        }
                      )
                    ]
                  )
              )
            }
          spids: [276]
        )
      ]
    )
    (C {<mkdir>} {<-p>} 
      {(DQ ($ Id.VSub_DollarName '$tmp_dir') </lib/modules/> ($ Id.VSub_DollarName '$KERNELRELEASE'))}
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Simple
                  words: [
                    {(DQ ($ Id.VSub_DollarName '$DEPMOD'))}
                    {<-b>}
                    {(DQ ($ Id.VSub_DollarName '$tmp_dir'))}
                    {($ Id.VSub_DollarName '$KERNELRELEASE')}
                  ]
                  redirects: [(redir.Redir op:<Id.Redir_Great '2>'> fd:2 arg_word:{</dev/null>})]
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<test>} {<-e>} 
                          {
                            (DQ ($ Id.VSub_DollarName '$tmp_dir') </lib/modules/> 
                              ($ Id.VSub_DollarName '$KERNELRELEASE') </modules.dep>
                            )
                          } {<-o>} {<-e>} 
                          {
                            (DQ ($ Id.VSub_DollarName '$tmp_dir') </lib/modules/> 
                              ($ Id.VSub_DollarName '$KERNELRELEASE') </modules.dep.bin>
                            )
                          }
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:depmod_hack_needed)
                          op: assign_op.Equal
                          rhs: {<false>}
                          spids: [352]
                        )
                      ]
                    )
                  ]
                  spids: [322 349]
                )
              ]
            )
          ]
          spids: [301 319]
        )
      ]
    )
    (C {<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName '$tmp_dir'))})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {($ Id.VSub_DollarName '$depmod_hack_needed')})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:symlink)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$INSTALL_MOD_PATH') </lib/modules/99.98.> 
                        ($ Id.VSub_DollarName '$KERNELRELEASE')
                      )
                    }
                  spids: [376]
                )
              ]
            )
            (C {<ln>} {<-s>} {(DQ ($ Id.VSub_DollarName '$KERNELRELEASE'))} 
              {(DQ ($ Id.VSub_DollarName '$symlink'))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:KERNELRELEASE)
                  op: assign_op.Equal
                  rhs: {<99.98.> ($ Id.VSub_DollarName '$KERNELRELEASE')}
                  spids: [397]
                )
              ]
            )
          ]
          spids: [368 373]
        )
      ]
    )
    (C {<Id.KW_Set set>} {<-->} {<-ae>} {<-F>} {<System.map>})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$INSTALL_MOD_PATH'))})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<Id.KW_Set set>} {<-->} {(DQ ($ Id.VSub_At '$@'))} {<-b>} 
              {(DQ ($ Id.VSub_DollarName '$INSTALL_MOD_PATH'))}
            )
          ]
          spids: [414 425]
        )
      ]
    )
    (C {(DQ ($ Id.VSub_DollarName '$DEPMOD'))} {(DQ ($ Id.VSub_At '$@'))} 
      {(DQ ($ Id.VSub_DollarName '$KERNELRELEASE'))} {($ Id.VSub_DollarName '$SYMBOL_PREFIX')}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ret)
          op: assign_op.Equal
          rhs: {($ Id.VSub_QMark '$?')}
          spids: [458]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {($ Id.VSub_DollarName '$depmod_hack_needed')})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [(C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$symlink'))})]
          spids: [462 467]
        )
      ]
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{($ Id.VSub_DollarName '$ret')})
  ]
)