(command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShFunction name: _modprobe body: (command.BraceGroup children: [ (C {<local>} {<cur>} {<prev>} {<words>} {<cword>} {<split>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<_init_completion>} {<-s>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$prev'))} arms: [ (case_arm pat_list: [{<-h>} {<--help>} {<-V>} {<--version>}] action: [(command.ControlFlow token:<Id.ControlFlow_Return return>)] spids: [43 50 56 -1] ) (case_arm pat_list: [{<-C>} {<--config>}] action: [(C {<_filedir>}) (command.ControlFlow token:<Id.ControlFlow_Return return>)] spids: [59 62 71 -1] ) (case_arm pat_list: [{<-d>} {<--dirname>} {<-t>} {<--type>}] action: [ (C {<_filedir>} {<-d>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] spids: [74 81 92 -1] ) (case_arm pat_list: [{<-S>} {<--set-version>}] action: [ (C {<_kernel_versions>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] spids: [95 98 107 -1] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$split')}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$cur'))} right: {<-> <Id.Lit_Other '*'>} ) ) terminator: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {<compgen>} {<-W>} {(SQ <'$( _parse_help "$1" )'>)} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [141] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: {($ Id.VSub_DollarName '$COMPREPLY')} ) ) ) terminator: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {<compgen>} {<-W>} { (SQ < '-a --all -b --use-blacklist -C --config\n' > <' -c --showconfig --dump-modversions -d --dirname --first-time\n'> < ' --force-vermagic --force-modversion -f --force -i\n' > <' --ignore-install --ignore-remove -l --list -n --dry-run -q\n'> < ' --quiet -R --resolve-alias -r --remove -S --set-version\n' > <' --show-depends -s --syslog -t --type -V --version -v\n'> <' --verbose'> ) } {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [179] ) ] ) ] spids: [165 176] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$COMPREPLY')} right: {<Id.Lit_Other '*'> <Id.BoolBinary_GlobEqual '='>} ) ) (C {<compopt>} {<-o>} {<nospace>}) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] spids: [122 138] ) ] ) (C {<local>} {<i>} {<Id.Lit_VarLike 'mode='> <insert>} {<Id.Lit_VarLike 'module='>} {<Id.Lit_VarLike 'version='> (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children:[(C {<uname>} {<-r>})]) ) } ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: (arith_expr.VarRef token:<Id.Lit_ArithVarLike i>) right: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$cword')}) ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:(sh_lhs_expr.Name name:i)) body: (command.DoGroup children: [ (command.Case to_match: { (DQ (braced_var_sub token: <Id.VSub_Name words> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.VarRef token:<Id.Lit_ArithVarLike i>) ) ) ) } arms: [ (case_arm pat_list: [{<-r>} {<--remove>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:mode) op: assign_op.Equal rhs: {<remove>} spids: [302] ) ] ) ] spids: [296 299 306 -1] ) (case_arm pat_list: [{<-l>} {<--list>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:mode) op: assign_op.Equal rhs: {<list>} spids: [315] ) ] ) ] spids: [309 312 319 -1] ) (case_arm pat_list: [{<--dump-modversions>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:mode) op: assign_op.Equal rhs: {<file>} spids: [326] ) ] ) ] spids: [322 323 330 -1] ) (case_arm pat_list: [{<-S>} {<--set-version>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:version) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name words> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.VarRef token: <Id.Lit_ArithVarLike i> ) right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>}) ) ) ) } spids: [339] ) ] ) ] spids: [333 336 353 -1] ) (case_arm pat_list: [{<-C>} {<--config>} {<-d>} {<--dirname>} {<-t>} {<--type>}] action: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: (sh_lhs_expr.Name name:i) ) ) ] spids: [356 367 380 -1] ) (case_arm pat_list: [{<-> <Id.Lit_Star '*'>}] spids: [383 385 392 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$module'))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:module) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name words> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.VarRef token: <Id.Lit_ArithVarLike i> ) ) ) } spids: [411] ) ] ) ] ) ] spids: [395 396 420 -1] ) ] ) ] ) ) (command.Case to_match: {($ Id.VSub_DollarName '$mode')} arms: [ (case_arm pat_list: [{<remove>}] action: [(C {<_installed_modules>} {(DQ ($ Id.VSub_DollarName '$cur'))})] spids: [437 438 448 -1] ) (case_arm pat_list:[{<list>}] spids:[451 452 459 -1]) (case_arm pat_list: [{<file>}] action: [(C {<_filedir>})] spids: [462 463 469 -1] ) (case_arm pat_list: [{<insert>}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$cur'))} right: { (word_part.ExtGlob op: <Id.ExtGlob_At '@('> arms: [{<Id.Lit_Other '*'> </>} {<'[.~]'>}] ) <Id.Lit_Other '*'> } ) ) terminator: <Id.Op_Semi _> ) ] action: [(C {<_filedir>} {(SQ <'@(?(k)o?(.gz))'>)})] spids: [480 501] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName '$module'))} ) ) terminator: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {<compgen>} {<-W>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [ {<modinfo>} {<-p>} { (DQ ($ Id.VSub_DollarName '$module' ) ) } ] redirects: [ (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {</dev/null>} ) ] more_env: [ (env_pair name: PATH val: { (DQ ($ Id.VSub_DollarName '$PATH' ) <':/sbin'> ) } spids: [543] ) ] ) (C {<awk>} {<-F> <Id.Lit_Other ':'>} {(SQ <'!/^[ \\t]/ { print $1 }'>)} ) ] negated: F ) ] ) ) ) } {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [531] ) ] ) ] spids: [511 524] ) ] else_action: [ (C {<_modules>} {($ Id.VSub_DollarName '$version')}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.WordTest w: {($ Id.VSub_DollarName '$COMPREPLY')} ) ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<local>} {<-a>} {<Id.Lit_VarLike 'mods='> (sh_array_literal left: <Id.Op_LParen _> words: [ { (DQ (braced_var_sub token: <Id.VSub_Name COMPREPLY> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ] ) } ) (C {<_installed_modules>} {(DQ ($ Id.VSub_DollarName '$cur'))}) (command.ForEach iter_name: i iter_words: [ { (braced_var_sub token: <Id.VSub_Name mods> prefix_op: (Id.VSub_Bang) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.ForEach iter_name: module iter_words: [ { (braced_var_sub token: <Id.VSub_Name COMPREPLY> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (braced_var_sub token: <Id.VSub_Name mods> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.VarRef token: < Id.Lit_ArithVarLike i > ) ) ) } right: { ($ Id.VSub_DollarName '$module') } ) ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<unset>} {(SQ <'mods[i]'>)}) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [674 692] ) ] ) ] ) ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (DQ (braced_var_sub token: <Id.VSub_Name mods> bracket_op: (bracket_op.WholeArray op_id: Id.Lit_At ) ) ) } ] ) } spids: [714] ) ] ) ] spids: [597 606] ) ] ) ] ) ] spids: [472 473 735 -1] ) ] ) ] ) ) (C {<complete>} {<-F>} {<_modprobe>} {<modprobe>}) ] )