(CommandList children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id:Redir_Less left:{($ VSub_Pound '$#')} right:{(2)}) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('Usage:'))}) (C {(echo)} {(DQ ('\t') ($ VSub_Number '$0') (' [vmlinux] [base path] [modules path]'))}) (C {(exit)} {(1)}) ] spids: [-1 23] ) ] spids: [-1 46] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:vmlinux) op:Equal rhs:{($ VSub_Number '$1')} spids:[49])] spids: [49] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:basepath) op: Equal rhs: {($ VSub_Number '$2')} spids: [52] ) ] spids: [52] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:modpath) op:Equal rhs:{($ VSub_Number '$3')} spids:[55])] spids: [55] ) (Assignment keyword: Assign_Declare flags: ["'-A'"] pairs: [(assign_pair lhs:(LhsName name:cache) op:Equal spids:[62])] spids: [58] ) (Assignment keyword: Assign_Declare flags: ["'-A'"] pairs: [(assign_pair lhs:(LhsName name:modcache) op:Equal spids:[68])] spids: [64] ) (FuncDef name: parse_symbol body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id:BoolBinary_GlobDEqual left:{($ VSub_Name '$module')} right:{(DQ )}) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:objfile) op: Equal rhs: {($ VSub_Name '$vmlinux')} spids: [119] ) ] spids: [117] ) ] spids: [-1 114] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (DQ (BracedVarSub token: <VSub_Name modcache> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$module')}) ) suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [128 135] ) ) } right: {(DQ (isset))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:objfile) op: Equal rhs: { (BracedVarSub token: <VSub_Name modcache> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$module')})) spids: [153 158] ) } spids: [152] ) ] spids: [150] ) ] spids: [123 147] ) ] else_action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id:BoolBinary_GlobDEqual left:{($ VSub_Name '$modpath')} right:{(DQ )}) ) (ControlFlow token:<ControlFlow_Return return>) ] op_id: Op_DAmp ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:objfile) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(find)} {(DQ ($ VSub_Name '$modpath'))} {(-name)} {($ VSub_Name '$module') (.ko)} {(-print)} {(-quit)} ) ] ) left_token: <Left_CommandSub '$('> spids: [183 198] ) } spids: [182] ) ] spids: [180] ) (AndOr children: [ (DBracket expr: (BoolBinary op_id:BoolBinary_GlobDEqual left:{($ VSub_Name '$objfile')} right:{(DQ )}) ) (ControlFlow token:<ControlFlow_Return return>) ] op_id: Op_DAmp ) (C {(modcache) (Lit_Other '[') ($ VSub_Name '$module') (Lit_Other ']') (Lit_Other '=') ($ VSub_Name '$objfile') } ) ] spids: [161 225] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:symbol) op: Equal rhs: { (BracedVarSub token: <VSub_Name symbol> suffix_op: (StringUnary op_id: VOp1_Pound arg_word: {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} ) spids: [234 238] ) } spids: [233] ) ] spids: [233] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:symbol) op: Equal rhs: { (BracedVarSub token: <VSub_Name symbol> suffix_op: (StringUnary op_id: VOp1_Percent arg_word: {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} ) spids: [242 246] ) } spids: [241] ) ] spids: [241] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: { (BracedVarSub token: <VSub_Name symbol> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{('+*')}) spids: [257 261] ) } spids: [256] ) ] spids: [254] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (DQ (BracedVarSub token: <VSub_Name cache> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Comma left: (ArithWord w:{($ VSub_Name '$module')}) right: (ArithWord w:{($ VSub_Name '$name')}) ) ) suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [282 291] ) ) } right: {(DQ (isset))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:base_addr) op: Equal rhs: { (BracedVarSub token: <VSub_Name cache> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Comma left: (ArithWord w:{($ VSub_Name '$module')}) right: (ArithWord w:{($ VSub_Name '$name')}) ) ) spids: [309 316] ) } spids: [308] ) ] spids: [306] ) ] spids: [-1 303] ) ] else_action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:base_addr) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(nm)} {(DQ ($ VSub_Name '$objfile'))}) (C {(grep)} {(-i)} {(SQ <' t '>)}) (C {(awk)} { (DQ ('/ ') ($ VSub_Name '$name') (EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ('/ {print ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('1}') ) } ) (C {(head)} {(-n1)}) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [325 360] ) } spids: [324] ) ] spids: [322] ) (C {(cache) (Lit_Other '[') ($ VSub_Name '$module') (Lit_Comma ',') ($ VSub_Name '$name') (Lit_Other ']') (Lit_Other '=') (DQ ($ VSub_Name '$base_addr')) } ) ] spids: [319 375] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:expr) op: Equal rhs: { (BracedVarSub token: <VSub_Name symbol> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [389 394] ) } spids: [388] ) ] spids: [386] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:expr) op: Equal rhs: { (BracedVarSub token: <VSub_Name expr> suffix_op: (PatSub pat: {($ VSub_Name '$name')} replace: {(0x) ($ VSub_Name '$base_addr')} do_all: False do_prefix: False do_suffix: False ) spids: [407 414] ) } spids: [406] ) ] spids: [406] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:expr) op: Equal rhs: {(ArithSubPart anode:(ArithVarRef name:expr) spids:[423426])} spids: [422] ) ] spids: [422] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:address) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(printf)} {(DQ ('%x') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>))} {(DQ ($ VSub_Name '$expr'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [432 443] ) } spids: [431] ) ] spids: [429] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (DQ (BracedVarSub token: <VSub_Name cache> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Comma left: (ArithWord w:{($ VSub_Name '$module')}) right: (ArithWord w:{($ VSub_Name '$address')}) ) ) suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [460 469] ) ) } right: {(DQ (isset))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:code) op: Equal rhs: { (BracedVarSub token: <VSub_Name cache> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Comma left: (ArithWord w:{($ VSub_Name '$module')}) right: (ArithWord w:{($ VSub_Name '$address')}) ) ) spids: [487 494] ) } spids: [486] ) ] spids: [484] ) ] spids: [-1 481] ) ] else_action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:code) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(addr2line)} {(-i)} {(-e)} {(DQ ($ VSub_Name '$objfile'))} {(DQ ($ VSub_Name '$address'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [503 517] ) } spids: [502] ) ] spids: [500] ) (C {(cache) (Lit_Other '[') ($ VSub_Name '$module') (Lit_Comma ',') ($ VSub_Name '$address') (Lit_Other ']') (Lit_Other '=') ($ VSub_Name '$code') } ) ] spids: [497 530] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$code')} right: {(DQ ('??:0'))} ) ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return>)] spids: [-1 561] ) ] spids: [-1 567] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:code) op: Equal rhs: { (BracedVarSub token: <VSub_Name code> suffix_op: (PatSub pat: {($ VSub_Name '$basepath')} replace: {(DQ )} do_all: True do_prefix: False do_suffix: False ) spids: [576 584] ) } spids: [575] ) ] spids: [575] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:code) op: Equal rhs: { (BracedVarSub token: <VSub_Name code> suffix_op: (PatSub pat: {(SQ <Lit_EscapedChar '\\n'>)} replace: {(SQ <' '>)} do_all: True do_prefix: False do_suffix: False ) spids: [593 604] ) } spids: [592] ) ] spids: [592] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:symbol) op: Equal rhs: {(DQ ($ VSub_Name '$name') (' (') ($ VSub_Name '$code') (')'))} spids: [612] ) ] spids: [612] ) ] spids: [75] ) spids: [71 74] ) (FuncDef name: decode_code body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:scripts) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(dirname)} { (DQ (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [637 642] ) ) } ) ] ) left_token: <Left_Backtick '`'> spids: [633 644] ) } spids: [632] ) ] spids: [630] ) (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Number '$1'))}) (C {($ VSub_Name '$scripts') (/decodecode)}) ] negated: False ) ] spids: [627] ) spids: [623 626] ) (FuncDef name: handle_line body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:words) op:Equal spids:[671])] spids: [669] ) (SimpleCommand words: [{(read)} {(-a)} {(words)}] redirects: [ (Redir op_id: Redir_TLess fd: -1 arg_word: {(DQ ($ VSub_Number '$1'))} spids: [685] ) ] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:last) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (BracedVarSub token: <VSub_Name words> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [714 720] ) } ) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [712 727] ) } spids: [711] ) ] spids: [709] ) (ForEach iter_name: i iter_words: [ { (DQ (BracedVarSub token: <VSub_Name words> prefix_op: VSub_Bang bracket_op: (WholeArray op_id:Lit_At) spids: [738 744] ) ) } ] do_arg_iter: False body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_EqualTilde left: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$i')}) ) spids: [759 764] ) } right: {(EscapedLiteralPart token:<Lit_EscapedChar '\\['>) (EscapedLiteralPart token: <Lit_EscapedChar '\\<'> ) ('(') (Lit_Other '[') (Lit_Other '^') (Lit_Other ']') (Lit_Other ']') (Lit_Other '+') (')') (EscapedLiteralPart token: <Lit_EscapedChar '\\>'> ) (EscapedLiteralPart token:<Lit_EscapedChar '\\]'>) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(unset)} {(words) (Lit_Other '[') ($ VSub_Name '$i') (Lit_Other ']')}) ] spids: [-1 783] ) ] spids: [-1 794] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$i')}) ) spids: [806 811] ) } right: {(EscapedLiteralPart token:<Lit_EscapedChar '\\['>)} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$i')}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [819 826] ) } right: {(Lit_Other '*') (EscapedLiteralPart token: <Lit_EscapedChar '\\]'> ) } ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(unset)} {(words) (Lit_Other '[') ($ VSub_Name '$i') (Lit_Other ']')}) (C {(words) (Lit_Other '[') ($ VSub_Name '$i') (Lit_Other '+') (1) (Lit_Other ']') (Lit_Other '=') (CommandSubPart command_list: (CommandList children: [ (C {(printf)} { (DQ ('[%13s') (EscapedLiteralPart token: <Lit_EscapedChar '\\n'> ) ) } { (DQ (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$i')}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [863 870] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [854 872] ) } ) ] spids: [-1 836] ) ] spids: [-1 875] ) ] spids: [748 878] ) spids: [736 746] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_EqualTilde left: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$last')})) spids: [886 891] ) } right: {(EscapedLiteralPart token:<Lit_EscapedChar '\\['>) ('(') (Lit_Other '[') (Lit_Other '^') (Lit_Other ']') (Lit_Other ']') (Lit_Other '+') (')') (EscapedLiteralPart token: <Lit_EscapedChar '\\]'> ) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:module) op: Equal rhs: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$last')})) spids: [912 917] ) } spids: [911] ) ] spids: [911] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:module) op: Equal rhs: { (BracedVarSub token: <VSub_Name module> suffix_op: (StringUnary op_id: VOp1_Pound arg_word: {(EscapedLiteralPart token:<Lit_EscapedChar '\\['>)} ) spids: [921 925] ) } spids: [920] ) ] spids: [920] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:module) op: Equal rhs: { (BracedVarSub token: <VSub_Name module> suffix_op: (StringUnary op_id: VOp1_Percent arg_word: {(EscapedLiteralPart token:<Lit_EscapedChar '\\]'>)} ) spids: [929 933] ) } spids: [928] ) ] spids: [928] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:symbol) op: Equal rhs: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$last')}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [937 944] ) } spids: [936] ) ] spids: [936] ) (C {(unset)} {(words) (Lit_Other '[') ($ VSub_Name '$last') (-1) (Lit_Other ']')}) ] spids: [-1 908] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:symbol) op: Equal rhs: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$last')})) spids: [964 969] ) } spids: [963] ) ] spids: [963] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:module) op:Equal rhs:{(SQ )} spids:[972])] spids: [972] ) ] spids: [956 975] ) (C {(unset)} {(words) (Lit_Other '[') ($ VSub_Name '$last') (Lit_Other ']')}) (C {(parse_symbol)}) (C {(echo)} { (DQ (BracedVarSub token: <VSub_Name words> bracket_op: (WholeArray op_id:Lit_At) spids: [1001 1006] ) ) } {(DQ ($ VSub_Name '$symbol') (' ') ($ VSub_Name '$module'))} ) ] spids: [666] ) spids: [662 665] ) (While cond: [(Sentence child:(C {(read)} {(line)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_EqualTilde left: {($ VSub_Name '$line')} right: {(EscapedLiteralPart token:<Lit_EscapedChar '\\['>) (EscapedLiteralPart token: <Lit_EscapedChar '\\<'> ) ('(') (Lit_Other '[') (Lit_Other '^') (Lit_Other ']') (Lit_Other ']') (Lit_Other '+') (')') (EscapedLiteralPart token: <Lit_EscapedChar '\\>'> ) (EscapedLiteralPart token:<Lit_EscapedChar '\\]'>) } ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(handle_line)} {(DQ ($ VSub_Name '$line'))})] spids: [-1 1055] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$line')} right: {(Lit_Other '*') (Code) (Lit_Other ':') (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(decode_code)} {(DQ ($ VSub_Name '$line'))})] spids: [1073 1089] ) ] else_action: [(C {(echo)} {(DQ ($ VSub_Name '$line'))})] spids: [1099 1113] ) ] spids: [1025 1115] ) ) ] )