(command.CommandList children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {($ Id.VSub_Pound '$#')} {(-ne)} {(3)}) terminator: (Token id:Id.Op_Semi val:';' span_id:19) ) ] action: [ (command.Simple words: [ {(echo)} { (DQ ('Usage: ') ($ Id.VSub_Number '$0') (' /sbin/depmod <kernelrelease> <symbolprefix>') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:32) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:36) 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: (Token id:Id.Op_Semi val:';' span_id:69) ) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:74) 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: (Token id:Id.Op_Semi val:';' span_id:96) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:release) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:102) 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: (Token id:Id.Left_DollarParen val:'$(' span_id:112) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(DQ ($ Id.VSub_DollarName '$release'))}) (C {(cut)} {(-d) (SQ (Token id:Id.Lit_Chars val:' ' span_id:125))} {(-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: (Token id:Id.Op_Semi val:';' span_id:147) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:version) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:153) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(DQ ($ Id.VSub_DollarName '$release'))}) (C {(cut)} {(-d) (SQ (Token id:Id.Lit_Chars val:' ' span_id:166))} {(-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: (Token id:Id.Left_DollarParen val:'$(' span_id:176) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:180))} {(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: (Token id:Id.Op_Semi val:';' span_id:221) ) ] 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: (Token id:Id.Op_Semi val:';' span_id:250) ) ] 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: (Token id:Id.Left_DollarParen val:'$(' span_id:277) command_list: (command.CommandList children: [ (C {(mktemp)} {(-d)} { (braced_var_sub token: (Token id:Id.VSub_Name val:TMPDIR span_id:283) 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: (Token id:Id.Redir_Great val:'2>' span_id:315) fd: 2 arg_word: {(/dev/null)} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:317) ) ] 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: (Token id:Id.Op_Semi val:';' span_id:347) ) ] 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: (Token id:Id.Op_Semi val:';' span_id:371) ) ] 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: (Token id:Id.Op_Semi val:';' span_id:423) ) ] 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: (Token id:Id.Op_Semi val:';' span_id:465) ) ] action: [(C {(rm)} {(-f)} {(DQ ($ Id.VSub_DollarName '$symlink'))})] spids: [462 467] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:481) arg_word: {($ Id.VSub_DollarName '$ret')} ) ] )