(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 op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [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 '$('>
                        child: (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 '$('>
                        child: 
                          (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 '$('>
                                child: 
                                  (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 '$('>
                                child: 
                                  (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 '$('>
                child: 
                  (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
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
              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')})
  ]
)